From tismer at codespeak.net Wed Oct 1 03:06:25 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 03:06:25 +0200 (MEST) Subject: [pypy-svn] rev 1490 - pypy/trunk/doc/funding/makedoc Message-ID: <20031001010625.B9E125A14A@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 03:06:23 2003 New Revision: 1490 Removed: pypy/trunk/doc/funding/makedoc/crossreferences.asc pypy/trunk/doc/funding/makedoc/doclist.asc pypy/trunk/doc/funding/makedoc/mkxref2.py pypy/trunk/doc/funding/makedoc/wp-tablebegin.asc pypy/trunk/doc/funding/makedoc/wp-tableend.asc pypy/trunk/doc/funding/makedoc/wp-toptable.asc Modified: pypy/trunk/doc/funding/makedoc/mkdoclist.py pypy/trunk/doc/funding/makedoc/part_b.sxw Log: simplify Deleted: /pypy/trunk/doc/funding/makedoc/crossreferences.asc ============================================================================== --- /pypy/trunk/doc/funding/makedoc/crossreferences.asc Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,25 +0,0 @@ -.. _WP10: #wp10 -.. _WP20: #wp20 -.. _WP21: #wp21 -.. _WP22: #wp22 -.. _WP30: #wp30 -.. _WP31: #wp31 -.. _WP32: #wp32 -.. _WP33: #wp33 -.. _WP40: #wp40 -.. _WP41: #wp41 -.. _WP42: #wp42 -.. _WP43: #wp43 -.. _WP44: #wp44 -.. _WP50: #wp50 -.. _WP51: #wp51 -.. _WP52: #wp52 -.. _WP53: #wp53 -.. _WP54: #wp54 -.. _WP55: #wp55 -.. _WP56: #wp56 -.. _WP60: #wp60 -.. _WP70: #wp70 -.. _WP80: #wp80 - -.. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file Deleted: /pypy/trunk/doc/funding/makedoc/doclist.asc ============================================================================== --- /pypy/trunk/doc/funding/makedoc/doclist.asc Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,37 +0,0 @@ -B0.0_preamble.html -B1.0_objectives.html -B2.0.0_new_relevance.html -B3.0_impact.html -B3.1_standards.html -B4.0_resources.html -B4.1_subcontracting.html -B4.2_other_countries.html -B5.0_management.html -B6.0_detailed_implementation.html -B6.1_plan_introduction.html -B6.4_workpackage_list.html -B6.7.wp10_management.html -B6.7.wp20_interpreter.html -B6.7.wp21_interpreter_completion.html -B6.7.wp22_cpython_to_python.html -B6.7.wp30_compiler.html -B6.7.wp31_translation_of_rpython.html -B6.7.wp32_bootstrap_redesign.html -B6.7.wp33_bootstrap_runtime.html -B6.7.wp40_high_performance.html -B6.7.wp41_integrate_stackless.html -B6.7.wp42_several_obj_impl.html -B6.7.wp43_translator_optimisations.html -B6.7.wp44_integrate_psyco.html -B6.7.wp50_validations.html -B6.7.wp51_embedded_device.html -B6.7.wp52_small_os_pre.html -B6.7.wp53_small_os.html -B6.7.wp54_simd_architecture.html -B6.7.wp55_numerical_package.html -B6.7.wp56_load_balancing.html -B6.7.wp60_documentation.html -B6.7.wp70_maintenance.html -B6.7.wp80_synchronisation.html -B7.0_gender_ethical.html -B7.2_other_issues.html Modified: pypy/trunk/doc/funding/makedoc/mkdoclist.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/mkdoclist.py (original) +++ pypy/trunk/doc/funding/makedoc/mkdoclist.py Wed Oct 1 03:06:23 2003 @@ -1,5 +1,11 @@ import os, sys, re +tempfiles = [] +class tempfile(file): + def __init__(self, name, *args, **kw): + tempfiles.append(name) + file.__init__(self, name, *args, **kw) + def get_file_list(): flis = os.listdir("..") pat = "[bB][0-9].[0-9]" @@ -88,17 +94,39 @@ for name in names: txt = file(os.path.join("..", name+".txt")).read() txt = mangle_wp_file(txt, name) - file(name+".txt", "w").write(txt) + tempfile(name+".txt", "w").write(txt) def make_doc_list(names): - f = file("doclist.asc", "w") + f = tempfile("doclist.asc", "w") for name in names: print>>f, "%s.html" % name +def build_xref_file(): + lines = file("../crossreferences.asc").readlines() + for i in range(len(lines)): + parts = lines[i].split() + if len(parts) >= 2: + if parts[0] == ".." and parts[1].startswith("_") and parts[1].endswith(":"): + txt = parts[1][1:-1] + lines[i] = "%s %s %s\n" % (parts[0], parts[1], "#"+txt.lower()) + tempfile("crossreferences.asc", "w").writelines(lines) + +def copy_ascfiles(): + for name in os.listdir(".."): + if name.startswith("wp-") and name.endswith(".asc"): + tempfile(name, "w").write(file(os.path.join("..", name)).read()) + def make_doc(): + build_xref_file() names = get_file_list() make_new_files(names) make_doc_list(names) + sys.argv=[sys.argv[0], "--no-xml-declaration"] + execfile("d:/python22/docutils/tools/buildhtml.py") + for name in tempfiles: + os.unlink(name) + if name.endswith(".txt"): + os.unlink(os.path.splitext(name)[0]+".html") if __name__ == "__main__": make_doc() \ No newline at end of file Deleted: /pypy/trunk/doc/funding/makedoc/mkxref2.py ============================================================================== --- /pypy/trunk/doc/funding/makedoc/mkxref2.py Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,21 +0,0 @@ -# mkxref2.py -# -# Generate crossreferences.asc -# this is generated from the upper directory, -# creating local references into -# the local document. - -import os, sys, re - -def build_xref_file(): - lines = file("../crossreferences.asc").readlines() - for i in range(len(lines)): - parts = lines[i].split() - if len(parts) >= 2: - if parts[0] == ".." and parts[1].startswith("_") and parts[1].endswith(":"): - txt = parts[1][1:-1] - lines[i] = "%s %s %s\n" % (parts[0], parts[1], "#"+txt.lower()) - file("crossreferences.asc", "w").writelines(lines) - -if __name__ == "__main__": - build_xref_file() \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Deleted: /pypy/trunk/doc/funding/makedoc/wp-tablebegin.asc ============================================================================== --- /pypy/trunk/doc/funding/makedoc/wp-tablebegin.asc Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,11 +0,0 @@ - -.. start a surounding single table cell with a minimum height. - -.. raw:: html - -



-

- - - - - -
Deleted: /pypy/trunk/doc/funding/makedoc/wp-tableend.asc ============================================================================== --- /pypy/trunk/doc/funding/makedoc/wp-tableend.asc Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,8 +0,0 @@ - -.. end a single surrounding table. - -.. raw:: html - -
Deleted: /pypy/trunk/doc/funding/makedoc/wp-toptable.asc ============================================================================== --- /pypy/trunk/doc/funding/makedoc/wp-toptable.asc Wed Oct 1 03:06:23 2003 +++ (empty file) @@ -1,172 +0,0 @@ - -.. create a nearly exact table for the WPs -.. note that you must define *all* the |xxx| references. - -.. raw:: html - -

- -

- -|title| -============== - -.. raw:: html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Workpackage number -

-
- - -|wp| - -.. raw:: html - - - -

Start date or starting - event:

-
- - -|start| - -.. raw:: html - - -
-

Participant id

-
- - -|p1| - -.. raw:: html - - - - - -|p2| - -.. raw:: html - - - - - -|p3| - -.. raw:: html - - - - - -|p4| - -.. raw:: html - - - - - -|p5| - -.. raw:: html - - - - - -|p6| - -.. raw:: html - - -
-

Person-months per - participant:

-
- - -|m1| - -.. raw:: html - - - - - -|m2| - -.. raw:: html - - - - - -|m3| - -.. raw:: html - - - - - -|m4| - -.. raw:: html - - - - - -|m5| - -.. raw:: html - - - - - -|m6| - -.. raw:: html - - -
From tismer at codespeak.net Wed Oct 1 03:54:33 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 03:54:33 +0200 (MEST) Subject: [pypy-svn] rev 1491 - pypy/trunk/doc/funding/tools Message-ID: <20031001015433.AF59B5A14A@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 03:54:32 2003 New Revision: 1491 Removed: pypy/trunk/doc/funding/tools/format.py pypy/trunk/doc/funding/tools/zipmod.py Log: moving tools to makedoc Deleted: /pypy/trunk/doc/funding/tools/format.py ============================================================================== --- /pypy/trunk/doc/funding/tools/format.py Wed Oct 1 03:54:32 2003 +++ (empty file) @@ -1,263 +0,0 @@ -import re -import sys - -START = re.compile(r'\s*<[^/][^<]*?>',re.DOTALL) -STOP = re.compile(r'\s*',re.DOTALL) -EMPTY = re.compile(r'\s*<[^/][^<]*?/>',re.DOTALL) -OTHER = re.compile(r'\s*<[!\?][^<]*>') -ANY = re.compile(r'[^<]*',re.DOTALL) -tab = ' ' - -tabprop = """""" - -class parse(object): - def __init__(self,text): - self.text = text - self.index = 0 - - def extractTagName(self,txt): - txt = txt.strip() - if not txt.startswith('<'): - return '' - if txt.find('/') != -1: - return '' - i = txt.find(' ') - if i != -1: - tagname = txt[1:i] - else: - tagname = txt[1:-1] - - #print >> sys.stderr,tagname - return tagname - - def start(self,txt):pass - def stop(self,txt):pass - def empty(self,txt):pass - def other(self,txt):pass - def any(self,txt):pass - def parse(self): - content = self.text - txtlen = len(content) - while txtlen > self.index: - m = OTHER.match(content,self.index) - if m is not None: - #print 'OTHER:',m.group(),m.span() - self.index = m.span()[1] - self.other(m.group()) - continue - m = EMPTY.match(content,self.index) - if m is not None: - #print 'EMPTY:',m.group(),m.span() - self.index = m.span()[1] - self.empty(m.group()) - continue - m = START.match(content,self.index) - if m is not None: - #print 'START:',m.group(),m.span() - self.index = m.span()[1] - self.start(m.group()) - continue - m = STOP.match(content,self.index) - if m is not None: - #print 'STOP:',m.group(),m.span() - self.index = m.span()[1] - self.stop(m.group()) - continue - m = ANY.match(content,self.index) - if m is not None: - #print 'ANY:',m.group(),m.span() - self.index = m.span()[1] - txt = m.group() - txt.strip() - self.any(txt) - continue - -class format(parse): - def __init__(self,*argl,**argd): - super(format,self).__init__(*argl,**argd) - self.level = 0 - self.outbuf = [] - - def __str__(self): - self.parse() - return '\n'.join(self.outbuf) - - def start(self,txt): - self.outbuf.append(tab*self.level+txt) - self.level += 1 - - def stop(self,txt): - self.level -= 1 - self.outbuf.append(tab*self.level+txt) - - def any(self,txt): - self.outbuf.append(tab*self.level+txt) - - def empty(self,txt): - self.outbuf.append(tab*self.level+txt) - - def other(self,txt): - self.outbuf.append(tab*self.level+txt) - -class findTableName(parse): - def __init__(self,*argl,**argd): - super(findTableName,self).__init__(*argl,**argd) - self.tabname = {} - self.currTable = '' - - def any(self,txt): - if self.currTable and txt.find('Workpackage number') != -1: - self.tabname[self.currTable] = True - - def stop(self,txt): - if txt.startswith('> sys.stderr,self.tabnames - self.inStyle = True - - def __str__(self): - self.parse() - return ''.join(self.outbuf) - - def start(self,txt): - i = txt.find(' ') - if i: - elem = txt[1:i] - else: - elem = txt[1:-1] - txt = txt.strip() - if txt.startswith('> sys.stderr,'found table-cell' - self.inStyle = True - self.outbuf.append(txt) - - def stop(self,txt): - txt = txt.strip() - if self.inStyle: - self.inStyle = False - self.outbuf.append(txt) - - def other(self,txt): - txt = txt.strip() - self.outbuf.append(txt) - - def empty(self,txt): - txt = txt.strip() - if self.inStyle and txt.find('style:properties') != -1: - self.outbuf.append(tabprop) - self.inStyle = False - else: - self.outbuf.append(txt) - - def any(self,txt): - txt = txt.strip() - if txt: - self.outbuf.append(txt) - -class cut(format): - def __init__(self,*argl,**argd): - super(cut,self).__init__(*argl,**argd) - self.level = 0 - self.write = True - self.stack = [] - - def __str__(self): - self.parse() - return ''.join(self.outbuf) - - def start(self,txt): - if self.write: - self.outbuf.append(txt) - self.stack.append(self.write) - - def other(self,txt): - if self.write: - self.outbuf.append(txt) - - def stop(self,txt): - write = self.stack.pop() - if write: - self.outbuf.append(txt) - - def empty(self,txt): - if self.write: - self.outbuf.append(txt) - - def any(self,txt): - if txt.find('DELETE:BEGIN') != -1: - if not self.write: - print >> sys.stderr,self.outbuf[-20:] - raise Exception('No closing DELETE:END found') - self.initStartCut() - elif txt.find('DELETE:END') != -1: - self.initStopCut() - else: - if self.write: - self.outbuf.append(txt) - - def initStartCut(self): - self.write = False - self.level = 0 - #CT adjust stack top for enclosing tag - self.stack.pop() - self.stack.append(self.write) - while 1: - if self.level > 2: - print >> sys.stderr,'LEN',len(self.outbuf) - print >> sys.stderr, self.outbuf[-10:] - raise Exception - last = self.outbuf.pop() - last = last.strip() - print >> sys.stderr,'startCut',last,self.level - if last.startswith(''): - continue - tag = self.extractTagName(last) - if tag and not self.level: - break - elif tag: - self.level -= 1 - print >> sys.stderr,'DONE' - - def initStopCut(self): - self.write = True - -def changeStyle(txt): - txt = str(cut(txt)) - #txt = str(replaceMargin(txt)) - # not correct yet - txt = str(format(txt)) - return txt - -if __name__ == '__main__': - import sys - fn = sys.argv[1] - content = open(fn).read() - #f = format(str(replaceMargin(content))) - f = str(format(content)) - print f Deleted: /pypy/trunk/doc/funding/tools/zipmod.py ============================================================================== --- /pypy/trunk/doc/funding/tools/zipmod.py Wed Oct 1 03:54:32 2003 +++ (empty file) @@ -1,86 +0,0 @@ -#! /usr/bin/env python - -import os, sys, zipfile -from format import changeStyle - -# s = """..... :DELETE:BEGIN:DELETE:END ----------""" * 2 - -def filter(s): - "Remove string all parts of a string within certain tags." - - text0 = '' - text1 = '' - tag0 = ":DELETE:BEGIN" - tag1 = ":DELETE:END" - - list = [] - while 1: - p = s.find(tag0) - if p == -1: break - s0 = s[:p] - t0 = s[p-len(text0):p] - t1 = s[p+len(tag0):p+len(tag0)+len(text1)] - list.append(s[:p-len(text0)]) - s = s[p+len(tag0)+len(text1):] - p = s.find(tag1) - if p == -1: break - s0 = s[:p] - t0 = s[p-len(text0):p] - t1 = s[p+len(tag1):p+len(tag1)+len(text1)] - s = s[p+len(tag1)+len(text1):] - list.append(s) - - return ''.join(list) - - -def modifyOpenOfficeContent(docPath, filename, func): - "Read the content XML file from a zipped Open Office document." - - # read ZIP file, build {filename:open(filename).read(), ...} - zip = zipfile.ZipFile(docPath, 'r') - filenames = zip.namelist() - filemap = {} - for fn in filenames: - filemap[fn] = zip.read(fn) - zip.close() - - # modify specific filename by applying func to it - content = filemap[filename] - modContent = func(content) - filemap[filename] = modContent - - # build temp. directory structure as in ZIP file - # (zipfile has no extract or modify method!) - tmp = 'tmp' - try: os.mkdir(tmp) - except OSError: pass - for fn in filenames: - dirName = os.path.join(tmp, os.path.dirname(fn)) - try: os.mkdir(dirName) - except OSError: pass - destPath = os.path.join(tmp, fn.replace('/',os.sep)) - d,f = os.path.split(destPath) - try: - os.makedirs(d) - except:pass - fs = open(destPath, 'wb') - fs.write(filemap[fn]) - - # rebuild a copy of the original ZIP file from tmp. dir. - name,end = os.path.splitext(docPath) - newpath = name+'_cp'+end - zip = zipfile.ZipFile(newpath, 'w', zipfile.ZIP_DEFLATED) - for fn in filenames: - destPath = os.path.join(tmp, fn.replace('/',os.sep)) - zip.write(destPath, fn) - - -def filterAll(txt): - txt = changeStyle(txt) - #txt = filter(txt) - - return txt - -if __name__ == '__main__': - docPath = sys.argv[1] - modifyOpenOfficeContent(docPath, 'content.xml', filterAll) From tismer at codespeak.net Wed Oct 1 03:55:23 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 03:55:23 +0200 (MEST) Subject: [pypy-svn] rev 1492 - pypy/trunk/doc/funding/tools Message-ID: <20031001015523.41DDE5A14A@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 03:55:22 2003 New Revision: 1492 Removed: pypy/trunk/doc/funding/tools/ Log: moved From tismer at codespeak.net Wed Oct 1 04:40:18 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 04:40:18 +0200 (MEST) Subject: [pypy-svn] rev 1493 - pypy/trunk/doc/funding/makedoc Message-ID: <20031001024018.05BC05A14A@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 04:40:17 2003 New Revision: 1493 Added: pypy/trunk/doc/funding/makedoc/format.py - copied unchanged from rev 1489, pypy/trunk/doc/funding/tools/format.py pypy/trunk/doc/funding/makedoc/zipmod.py - copied unchanged from rev 1489, pypy/trunk/doc/funding/tools/zipmod.py Modified: pypy/trunk/doc/funding/makedoc/mkdoclist.py pypy/trunk/doc/funding/makedoc/part_b.sxw Log: some automatic file generation and OLE automation. I can open the document, but how do I run a macro??? Modified: pypy/trunk/doc/funding/makedoc/mkdoclist.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/mkdoclist.py (original) +++ pypy/trunk/doc/funding/makedoc/mkdoclist.py Wed Oct 1 04:40:17 2003 @@ -118,11 +118,17 @@ def make_doc(): build_xref_file() + copy_ascfiles() names = get_file_list() make_new_files(names) make_doc_list(names) sys.argv=[sys.argv[0], "--no-xml-declaration"] execfile("d:/python22/docutils/tools/buildhtml.py") + from win32com.client import Dispatch + objServiceManager= Dispatch("com.sun.star.ServiceManager") + objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") + objDocument= objDesktop.loadComponentFromURL(r"file:///D|/pypy/trunk/doc/funding/makedoc/part_b.sxw", "_blank", 0, ()) + return for name in tempfiles: os.unlink(name) if name.endswith(".txt"): Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 1 04:43:59 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 04:43:59 +0200 (MEST) Subject: [pypy-svn] rev 1494 - pypy/trunk/doc/funding/makedoc Message-ID: <20031001024359.6E12A5A14A@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 04:43:57 2003 New Revision: 1494 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: new pdf Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From hpk at codespeak.net Wed Oct 1 09:45:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 09:45:50 +0200 (MEST) Subject: [pypy-svn] rev 1495 - in pypy/trunk/src/pypy: objspace/flow objspace/flow/test tool translator translator/test Message-ID: <20031001074550.F38A65A264@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 09:45:49 2003 New Revision: 1495 Added: pypy/trunk/src/pypy/tool/udir.py pypy/trunk/src/pypy/translator/flowmodel.py (contents, props changed) - copied, changed from rev 1489, pypy/trunk/src/pypy/translator/controlflow.py Removed: pypy/trunk/src/pypy/translator/controlflow.py Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py pypy/trunk/src/pypy/objspace/flow/wrapper.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/buildpyxmodule.py pypy/trunk/src/pypy/translator/test/make_dot.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_sourcegen.py Log: - renamed controlflow to flowmodel because it fits better - enhanced generation of files now all files are put into a unqiue directory per process (so all unittests will essentially put files into some directory). Also the filenames are now formed semantically. - improved dot-output a bit here and there - lots of small enhancements Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Wed Oct 1 09:45:49 2003 @@ -3,7 +3,7 @@ from pypy.interpreter.pyframe \ import ControlFlowException, ExitFrame, PyFrame from pypy.objspace.flow.wrapper import W_Variable, W_Constant, UnwrapException -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * class SpamBlock(BasicBlock): dead = False Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Wed Oct 1 09:45:49 2003 @@ -5,7 +5,7 @@ from pypy.interpreter.pycode import PyCode from pypy.interpreter.error import OperationError from pypy.objspace.flow.wrapper import * -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * from pypy.objspace.flow import flowcontext # ______________________________________________________________________ Modified: pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py Wed Oct 1 09:45:49 2003 @@ -2,122 +2,139 @@ from pypy.tool import test from pypy.objspace.flow.wrapper import * -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * class TestFlowOjSpace(test.TestCase): def setUp(self): self.space = test.objspace('flow') - def codetest(self, source, functionname): - glob = {} - exec source in glob - func = glob[functionname] - return self.space.build_flow(func) + def codetest(self, func): + import inspect + try: + func = func.im_func + except AttributeError: + pass + #name = func.func_name + graph = self.space.build_flow(func) + graph.source = inspect.getsource(func) + return graph def reallyshow(self, x): import os - from pypy.translator.test.make_dot import make_png - make_png(x) - #os.system('xv -nolimits /tmp/testgraph.png') - os.system('gv /tmp/testgraph.ps') + from pypy.translator.test.make_dot import make_dot + from pypy.tool.udir import udir + dest = make_dot(x, udir, 'ps') + os.system('gv %s' % str(dest)) def show(self, x): pass # or self.reallyshow(x) + #__________________________________________________________ + def nothing(): + pass + def test_nothing(self): - x = self.codetest("def nothing():\n" - " pass\n", - 'nothing') - #self.assertEquals(x.functionname, 'f') + x = self.codetest(self.nothing) self.assertEquals(x.startblock.branch.__class__, EndBranch) self.show(x) + #__________________________________________________________ + def simplebranch(i, j): + if i < 0: + return i + return j + def test_simplebranch(self): - x = self.codetest("def simplebranch(i, j):\n" - " if i < 0:\n" - " return i\n" - " return j\n", - 'simplebranch') + x = self.codetest(self.simplebranch) self.show(x) + #__________________________________________________________ + def ifthenelse(i, j): + if i < 0: + i = j + return g(i) + 1 + def test_ifthenelse(self): - x = self.codetest("def g(i):\n" - " pass\n" - "def ifthenelse(i, j):\n" - " if i < 0:\n" - " i = j\n" - " return g(i) + 1\n", - 'ifthenelse') + x = self.codetest(self.simplebranch) self.show(x) + #__________________________________________________________ + def print_(i): + print i + def test_print(self): - x = self.codetest("def test_print(i):\n" - " print i\n", - 'test_print') + x = self.codetest(self.print_) self.show(x) + #__________________________________________________________ + def while_(i): + while i > 0: + i = i - 1 + def test_while(self): - #import sys; print >> sys.stderr, "--- starting! ---" - x = self.codetest("def test_while(i):\n" - " while i > 0:\n" - " i = i - 1\n" - " #print i\n", - 'test_while') - #import sys; print >> sys.stderr, "--- done! ---" + x = self.codetest(self.while_) self.show(x) + #__________________________________________________________ + def union_easy(i): + if i: + pass + else: + i = 5 + return i + def test_union_easy(self): - x = self.codetest("def union_easy(i):\n" - " if i:\n" - " pass\n" - " else:\n" - " i = 5\n" - " return i\n", - 'union_easy') + x = self.codetest(self.union_easy) self.show(x) + #__________________________________________________________ + def union_hard(i): + if i: + i = 5 + return i + def test_union_hard(self): - x = self.codetest("def union_hard(i):\n" - " if i:\n" - " i = 5\n" - " return i\n", - 'union_hard') + x = self.codetest(self.union_hard) self.show(x) + #__________________________________________________________ + def while_union(i): + total = 0 + while i > 0: + total += i + i = i - 1 + return total + def test_while_union(self): - x = self.codetest("def while_union(i):\n" - " total = 0\n" - " while i > 0:\n" - " total += i\n" - " i = i - 1\n" - " return total\n", - 'while_union') + x = self.codetest(self.while_union) self.show(x) + #__________________________________________________________ + def simple_for(lst): + total = 0 + for i in lst: + total += i + return total + def test_simple_for(self): - x = self.codetest("def simple_for(lst):\n" - " total = 0\n" - " for i in lst:\n" - " total += i\n" - " return total\n", - 'simple_for') + x = self.codetest(self.simple_for) self.show(x) + #__________________________________________________________ + def nested_whiles(i, j): + s = '' + z = 5 + while z > 0: + z = z - 1 + u = i + while u < j: + u = u + 1 + s = s + '.' + s = s + '!' + return s + def test_nested_whiles(self): - src = """ -def nested_whiles(i, j): - s = '' - z = 5 - while z > 0: - z = z - 1 - u = i - while u < j: - u = u + 1 - s = s + '.' - s = s + '!' - return s -""" - x = self.codetest(src, 'nested_whiles') + x = self.codetest(self.nested_whiles) self.reallyshow(x) if __name__ == '__main__': Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/wrapper.py (original) +++ pypy/trunk/src/pypy/objspace/flow/wrapper.py Wed Oct 1 09:45:49 2003 @@ -5,7 +5,7 @@ # This is kinda a hack, but at the same time, I don't see why this was defined # in the object space module in the annotation object space. -from pypy.translator.controlflow import Variable, Constant +from pypy.translator.flowmodel import Variable, Constant class UnwrapException(Exception): pass Added: pypy/trunk/src/pypy/tool/udir.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/tool/udir.py Wed Oct 1 09:45:49 2003 @@ -0,0 +1,41 @@ +import autopath + +#__________________________________________________________ +# udir (a unique human-readable directory path where unittests can store +# files to their likening) + +def make_udir(): + from vpath.local import Path, mkdtemp + + _newtmpdir = mkdtemp() + _tmpdir = _newtmpdir.dirname() + _newtmpdir.rmdir() + + name, num = 'usession', 0 + items = [] + for item in _tmpdir.listdir(): + if item.basename().startswith(name): + xb = item.basename().split('-') + try: + name, num = xb[0], int(xb[1]) + items.append((name, num)) + except (TypeError,ValueError): + continue + + if items: + items.sort() + name, num = items[-1] + num += 1 + + udir = _tmpdir.join('-'.join([name, str(num)])) + udir.mkdir() + return udir + +udir = make_udir() + +#__________________________________________________________ + + +if __name__ == '__main__': + # test all of pypy + print udir Deleted: /pypy/trunk/src/pypy/translator/controlflow.py ============================================================================== --- /pypy/trunk/src/pypy/translator/controlflow.py Wed Oct 1 09:45:49 2003 +++ (empty file) @@ -1,67 +0,0 @@ - -import autopath - - -class BasicBlock: - def __init__(self, input_args, locals, operations, branch=None): - self.input_args = input_args - self.locals = locals - self.operations = operations - self.branch = branch - def closeblock(self, branch): - self.operations = tuple(self.operations) # should no longer change - self.branch = branch - -class Variable: - def __init__(self, pseudoname): - self.pseudoname = pseudoname - def __repr__(self): - return "<%s>" % self.pseudoname - -class Constant: - def __init__(self, value): - self.value = value - - def __repr__(self): - return str(self.value) - -class SpaceOperation: - def __init__(self, opname, args, result): - self.opname = opname - self.args = args # list of variables - self.result = result # - def __eq__(self, other): - return (self.__class__ is other.__class__ and - self.opname == other.opname and - self.args == other.args and - self.result == other.result) - - def __repr__(self): - return "%s(%s) -> %s" % (self.opname, ", ".join(map(str, self.args)), self.result) - -class Branch: - def __init__(self, args=None, target=None): - self.set(args, target) - - def set(self, args, target): - self.args = args # list of variables - self.target = target # basic block instance - -class ConditionalBranch: - def __init__(self, condition=None, ifbranch=None, elsebranch=None): - self.set(condition, ifbranch, elsebranch) - - def set(self, condition, ifbranch, elsebranch): - self.condition = condition - self.ifbranch = ifbranch - self.elsebranch = elsebranch - -class EndBranch: - def __init__(self, returnvalue): - self.returnvalue = returnvalue - -class FunctionGraph: - def __init__(self, startblock, functionname): - self.startblock = startblock - self.functionname = functionname - Copied: pypy/trunk/src/pypy/translator/flowmodel.py (from rev 1489, pypy/trunk/src/pypy/translator/controlflow.py) ============================================================================== --- pypy/trunk/src/pypy/translator/controlflow.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 09:45:49 2003 @@ -1,13 +1,16 @@ - -import autopath - - +""" +the objectmodel on which the FlowObjSpace and the translator +interoperate. While the FlowObjSpace may (and does) use subclasses +of the classes in this module the translator parts will only look +into the attributes defined here. +""" class BasicBlock: def __init__(self, input_args, locals, operations, branch=None): self.input_args = input_args self.locals = locals self.operations = operations self.branch = branch + def closeblock(self, branch): self.operations = tuple(self.operations) # should no longer change self.branch = branch @@ -15,6 +18,7 @@ class Variable: def __init__(self, pseudoname): self.pseudoname = pseudoname + def __repr__(self): return "<%s>" % self.pseudoname @@ -28,8 +32,9 @@ class SpaceOperation: def __init__(self, opname, args, result): self.opname = opname - self.args = args # list of variables + self.args = args # list of variables self.result = result # + def __eq__(self, other): return (self.__class__ is other.__class__ and self.opname == other.opname and Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Wed Oct 1 09:45:49 2003 @@ -1,8 +1,11 @@ +""" +generate Pyrex files from the flowmodel. +""" import autopath from pypy.tool import test from pypy.interpreter.baseobjspace import ObjSpace -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * class GenPyrex: def __init__(self, functiongraph): @@ -19,19 +22,19 @@ self.blockids = {} self.lines = [] self.indent = 0 - self.createCodeFromGraph() + self.gen_Graph() return "\n".join(self.lines) def putline(self, line): self.lines.append(" " * self.indent + line) - def createCodeFromGraph(self): + def gen_Graph(self): fun = self.functiongraph inputargnames = [ var.pseudoname for var in fun.startblock.input_args ] params = ", ".join(inputargnames) self.putline("def %s(%s):" % (fun.functionname, params)) self.indent += 1 - self.createCodeFromBasicBlock(fun.startblock) + self.gen_BasicBlock(fun.startblock) self.indent -= 1 def _str(self, obj): @@ -42,13 +45,14 @@ else: raise ValueError("Unknow class: %s" % obj.__class__) - def createCodeFromBasicBlock(self, block): + def gen_BasicBlock(self, block): if self.blockids.has_key(block): self.putline('cinline "goto Label%s;"' % self.blockids[block]) return blockids = self.blockids blockids.setdefault(block, len(blockids)) + self.putline('cinline "Label%s:"' % blockids[block]) for op in block.operations: @@ -65,10 +69,10 @@ self.dispatchBranch(block.branch) def dispatchBranch(self, branch): - method = getattr(self, "createCodeFrom" + branch.__class__.__name__) + method = getattr(self, "gen_" + branch.__class__.__name__) method(branch) - def createCodeFromBranch(self, branch): + def gen_Branch(self, branch): _str = self._str block = branch.target sourceargs = [_str(arg) for arg in branch.args] @@ -77,13 +81,12 @@ if sourceargs and sourceargs != targetargs: self.putline("%s = %s" % (", ".join(targetargs), ", ".join(sourceargs))) - self.createCodeFromBasicBlock(block) + self.gen_BasicBlock(block) - def createCodeFromEndBranch(self, branch): + def gen_EndBranch(self, branch): self.putline("return %s" % self._str(branch.returnvalue)) - - def createCodeFromConditionalBranch(self, branch): + def gen_ConditionalBranch(self, branch): self.putline("if %s:" % self._str(branch.condition)) self.indent += 1 self.dispatchBranch(branch.ifbranch) Modified: pypy/trunk/src/pypy/translator/test/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Wed Oct 1 09:45:49 2003 @@ -2,15 +2,13 @@ import autopath from pypy.tool import test -from vpath.local import Path, mkdtemp +from vpath.local import Path import os, sys -debug = 1 +debug = 0 -def make_module_from_pyxstring(string, num=[0]): - tmpdir = mkdtemp() - n = num[0] = num[0]+1 - pyxfile = tmpdir.join('test%d.pyx' %n) +def make_module_from_pyxstring(name, dirpath, string): + pyxfile = dirpath.join('%s.pyx' % name) pyxfile.write(string) if debug: print "made pyxfile", pyxfile make_c_from_pyxfile(pyxfile) @@ -53,8 +51,8 @@ sys.path.pop(0) finally: os.chdir(str(lastdir)) - if not debug: - dirpath.rmtree() + #if not debug: + #dirpath.rmtree() return testmodule def make_c_from_pyxfile(pyxfile): Modified: pypy/trunk/src/pypy/translator/test/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/test/make_dot.py Wed Oct 1 09:45:49 2003 @@ -4,9 +4,11 @@ """ import autopath -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * import os +debug = 0 + counters = {} class Node: @@ -115,8 +117,12 @@ self.traverse(fun) l = [] for node in self.nodes.values(): - l.append(node.descr_node()) - l.append(node.descr_edges()) + if hasattr(node, 'source'): + l.insert(0, node.descr_node()) + l.insert(0, node.descr_edges()) + else: + l.append(node.descr_node()) + l.append(node.descr_edges()) content = "\n".join(l) @@ -167,24 +173,30 @@ if trynode: node.addedge(trynode, name) else: - node.data.append("%s=%r" % (name, attr)) + if name == 'source' and type(attr) is str: + attr = "\\l".join(attr.split('\n')) + node.data.append('\\l%s' % attr.replace('"', '\\"')) + else: + node.data.append("%s=%s" % (name, repr(attr).replace('"', '\\"'))) #print "unknown attribute", name, item return node - else: + elif debug: print "unknown obj", obj -def make_png(fun): +def make_dot(fun, udir, target='ps'): dotgen = DotGen() + + name = fun.functionname from vpath.local import Path from vpath.adapter.process import exec_cmd - dest = Path('/tmp/testgraph.dot') - #print dotgen.get_source(fun) + dest = udir.join('%s.dot' % name) dest.write(dotgen.get_source(fun)) - psdest = dest.newsuffix('.ps') - out = exec_cmd('dot -Tps %s' % str(dest)) + psdest = dest.newsuffix(target) + out = exec_cmd('dot -T%s %s' % (target, str(dest))) psdest.write(out) print "wrote", psdest + return psdest if __name__ == '__main__': i = Variable("i") Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Wed Oct 1 09:45:49 2003 @@ -1,79 +1,87 @@ import autopath from pypy.tool import test - +from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex -from pypy.translator.controlflow import * - +from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -#from pypy.translator.test.make_dot import make_ps + +make_dot = 1 + +if make_dot: + from pypy.translator.test.make_dot import make_dot +else: + def make_dot(*args): pass class TestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') - def makemod(self, source, fname): - fun = self.codetest(source, fname) - fun.source = source - result = GenPyrex(fun).emitcode() - return make_module_from_pyxstring(result) - - def codetest(self, source, functionname): - glob = {} - exec source in glob - func = glob[functionname] - return self.space.build_flow(func) + def make_cfunc(self, func): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + name = func.func_name + funcgraph = self.space.build_flow(func) + funcgraph.source = inspect.getsource(func) + result = GenPyrex(funcgraph).emitcode() + make_dot(funcgraph, udir, 'ps') + mod = make_module_from_pyxstring(name, udir, result) + return getattr(mod, name) + + #____________________________________________________ + def simple_func(i): + return i+1 def test_simple_func(self): - src = """ -def simple_func(i): - return i+1 -""" - mod = self.makemod(src, 'simple_func') - self.assertEquals(mod.simple_func(1), 2) - - def test_while(self): - src = """ -def while_func(i): - total = 0 - while i > 0: - total = total + i - i = i - 1 - return total -""" - mod = self.makemod(src, 'while_func') - self.assertEquals(mod.while_func(10), 55) + cfunc = self.make_cfunc(self.simple_func) + self.assertEquals(cfunc(1), 2) + + #____________________________________________________ + def while_func(i): + total = 0 + while i > 0: + total = total + i + i = i - 1 + return total + + def test_while_func(self): + while_func = self.make_cfunc(self.while_func) + self.assertEquals(while_func(10), 55) + + #____________________________________________________ + def nested_whiles(i, j): + s = '' + z = 5 + while z > 0: + z = z - 1 + u = i + while u < j: + u = u + 1 + s = s + '.' + s = s + '!' + return s def test_nested_whiles(self): - src = """ -def nested_whiles(i, j): - s = '' - z = 5 - while z > 0: - z = z - 1 - u = i - while u < j: - u = u + 1 - s = s + '.' - s = s + '!' - return s -""" - mod = self.makemod(src, 'nested_whiles') - self.assertEquals(mod.nested_whiles(111, 114), + nested_whiles = self.make_cfunc(self.nested_whiles) + self.assertEquals(nested_whiles(111, 114), '...!...!...!...!...!') + #____________________________________________________ + def poor_man_range(i): + lst = [] + while i > 0: + i = i - 1 + lst.append(i) + lst.reverse() + return lst + def dont_yet_test_poor_man_range(self): - src = """ -def poor_man_range(i): - lst = [] - while i > 0: - i = i - 1 - lst.append(i) - lst.reverse() - return lst -""" - mod = self.makemod(src, 'poor_man_range') - self.assertEquals(mod.poor_man_range(10), range(10)) + poor_man_range = self.make_cfunc(self.poor_man_range) + self.assertEquals(poor_man_range(10), range(10)) if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/test/test_sourcegen.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_sourcegen.py (original) +++ pypy/trunk/src/pypy/translator/test/test_sourcegen.py Wed Oct 1 09:45:49 2003 @@ -1,9 +1,10 @@ import autopath from pypy.tool import test +from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex -from pypy.translator.controlflow import * +from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring #from pypy.translator.test.make_dot import make_ps @@ -24,7 +25,7 @@ endbranch) fun = FunctionGraph(block, "f") result = GenPyrex(fun).emitcode() - mod = make_module_from_pyxstring(result) + mod = make_module_from_pyxstring('test_source1', udir, result) self.assertEquals(mod.f(1), 2) def test_if(self): @@ -51,7 +52,7 @@ conditionalbranch) fun = FunctionGraph(startblock, "f") result = GenPyrex(fun).emitcode() - mod = make_module_from_pyxstring(result) + mod = make_module_from_pyxstring('test_source2', udir, result) self.assertEquals(mod.f(-1, 42), 42) self.assertEquals(mod.f(3, 5), 3) @@ -87,7 +88,7 @@ #make_ps(fun) result = GenPyrex(fun).emitcode() - mod = make_module_from_pyxstring(result) + mod = make_module_from_pyxstring('test_source3', udir, result) self.assertEquals(mod.f(42), 0) self.assertEquals(mod.f(-3), -3) @@ -128,7 +129,7 @@ fun = FunctionGraph(startblock, "f") result = GenPyrex(fun).emitcode() - mod = make_module_from_pyxstring(result) + mod = make_module_from_pyxstring('test_source4', udir, result) self.assertEquals(mod.f(3), 6) self.assertEquals(mod.f(-3), 0) From dinu at codespeak.net Wed Oct 1 12:03:26 2003 From: dinu at codespeak.net (dinu at codespeak.net) Date: Wed, 1 Oct 2003 12:03:26 +0200 (MEST) Subject: [pypy-svn] rev 1496 - pypy/trunk/doc/funding Message-ID: <20031001100326.24DD25C3F5@thoth.codespeak.net> Author: dinu Date: Wed Oct 1 12:03:26 2003 New Revision: 1496 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: added LL3 workshop Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Wed Oct 1 12:03:26 2003 @@ -156,8 +156,9 @@ out> others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications) and ECOOP (European Conference -on Object-Oriented Programming) and the like as the next target? +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? ASK STOCKHOLM -- will the EU pay for us to go to conferences? even ones we were going to attend anyway? From arigo at codespeak.net Wed Oct 1 12:31:27 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 1 Oct 2003 12:31:27 +0200 (MEST) Subject: [pypy-svn] rev 1497 - pypy/trunk/src/pypy/objspace/flow/test Message-ID: <20031001103127.B11C45C3F5@thoth.codespeak.net> Author: arigo Date: Wed Oct 1 12:31:27 2003 New Revision: 1497 Modified: pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py Log: no longer tries to display the graph automatically Modified: pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py Wed Oct 1 12:31:27 2003 @@ -135,7 +135,7 @@ def test_nested_whiles(self): x = self.codetest(self.nested_whiles) - self.reallyshow(x) + self.show(x) if __name__ == '__main__': test.main() From tomek at codespeak.net Wed Oct 1 13:09:49 2003 From: tomek at codespeak.net (tomek at codespeak.net) Date: Wed, 1 Oct 2003 13:09:49 +0200 (MEST) Subject: [pypy-svn] rev 1498 - in pypy/trunk/src/pypy: objspace/flow translator/test Message-ID: <20031001110949.640015C3F5@thoth.codespeak.net> Author: tomek Date: Wed Oct 1 13:09:48 2003 New Revision: 1498 Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py pypy/trunk/src/pypy/translator/test/make_dot.py Log: I changed the representation of W_Variable and W_Constant to var(%s) and const(%s), and remove the framestate attribute from the graph, which makes it much smaller and thus much more human readable. Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/wrapper.py (original) +++ pypy/trunk/src/pypy/objspace/flow/wrapper.py Wed Oct 1 13:09:48 2003 @@ -26,9 +26,12 @@ def __repr__(self): s = self.argsrepr() + name = getattr(self, "symname", "") + if not name: + name = self.__class__.__name__ if len(s) > 100: s = s[:25] + "..." + s[-25:] - return "%s(%s)" % (self.__class__.__name__, s) + return "%s(%s)" % (name, s) def argsrepr(self): return "" @@ -47,6 +50,7 @@ class W_Variable(W_Object, Variable): counter = 0 + symname = "var" def __init__(self): Variable.__init__(self, 'v%d' % W_Variable.counter) @@ -60,6 +64,7 @@ class W_Constant(W_Object, Constant): """A specific constant value.""" + symname = "const" def __init__(self, value): Constant.__init__(self, value) Modified: pypy/trunk/src/pypy/translator/test/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/test/make_dot.py Wed Oct 1 13:09:48 2003 @@ -169,6 +169,9 @@ if node: self.nodes[obj] = node for name, attr in obj.__dict__.items(): + ##XXX it makes the graph not very readeable + if name == "framestate": + continue trynode = self.traverse(attr, name) if trynode: node.addedge(trynode, name) From arigo at codespeak.net Wed Oct 1 13:56:49 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 1 Oct 2003 13:56:49 +0200 (MEST) Subject: [pypy-svn] rev 1499 - pypy/trunk/src/pypy/objspace/flow Message-ID: <20031001115649.BEF695A2A9@thoth.codespeak.net> Author: arigo Date: Wed Oct 1 13:56:49 2003 New Revision: 1499 Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/objspace/flow/wrapper.py Log: Different variables no longer compare equal Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Wed Oct 1 13:56:49 2003 @@ -5,6 +5,14 @@ from pypy.objspace.flow.wrapper import W_Variable, W_Constant, UnwrapException from pypy.translator.flowmodel import * + +def constantsof(lst): + result = {} + for i in range(len(lst)): + if isinstance(lst[i], W_Constant): + result[i] = lst[i] + return result + class SpamBlock(BasicBlock): dead = False @@ -40,14 +48,14 @@ newstate = [] for w1, w2 in zip(mergeablestate1, mergeablestate2): - if w1 == w2: + if w1 == w2 or isinstance(w1, W_Variable): w = w1 else: w = W_Variable() newstate.append(w) - if newstate == mergeablestate1: + if constantsof(newstate) == constantsof(mergeablestate1): return self - elif newstate == mergeablestate2: + elif constantsof(newstate) == constantsof(mergeablestate2): return other else: return SpamBlock((newstate, unmergeablestate1)) @@ -86,8 +94,8 @@ self.index = 0 def append(self, operation): - assert operation == self.listtoreplay[self.index] operation.result = self.listtoreplay[self.index].result + assert operation == self.listtoreplay[self.index] self.index += 1 def finished(self): Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/wrapper.py (original) +++ pypy/trunk/src/pypy/objspace/flow/wrapper.py Wed Oct 1 13:56:49 2003 @@ -40,12 +40,6 @@ # XXX Somehow importing this at module level doesn't work raise UnwrapException(self) - def __eq__(self, other): - return type(other) is type(self) - - def __ne__(self, other): - return not self.__eq__(other) - # ______________________________________________________________________ class W_Variable(W_Object, Variable): From dinu at codespeak.net Wed Oct 1 14:03:53 2003 From: dinu at codespeak.net (dinu at codespeak.net) Date: Wed, 1 Oct 2003 14:03:53 +0200 (MEST) Subject: [pypy-svn] rev 1500 - pypy/trunk/doc/funding Message-ID: <20031001120353.729FA5A2A9@thoth.codespeak.net> Author: dinu Date: Wed Oct 1 14:03:52 2003 New Revision: 1500 Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt Log: fixed some types Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Wed Oct 1 14:03:52 2003 @@ -154,7 +154,7 @@ The main lack of flexibility in CPython stems from the fact that all structures are hard-coded in C, and there is no abstraction layer. PyPy does provide this abstraction layer, -since it's RPython implementation is not meant to be +since its RPython implementation is not meant to be executed directly, but goes though a code generator which produces the actual machine code. This layer is highly configurable. @@ -189,14 +189,14 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since the standard object space allows coexistence of different implementations of the same type, we can develop - **several object implementations** . + **several object implementations**. We will develop heuristics to switch between different implementations during execution. The goal is to study the efficiency of different approaches, with the possibility to change the default implementation if favor of a different one, not known in CPython. Some object layouts will further exist in parallel, if their - efficiency is highly application dependant.. + efficiency is highly application dependant. WP43_: Translator Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From pedronis at codespeak.net Wed Oct 1 14:05:09 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 1 Oct 2003 14:05:09 +0200 (MEST) Subject: [pypy-svn] rev 1501 - in pypy/trunk/src/pypy: objspace/flow translator Message-ID: <20031001120509.7CD245A2A9@thoth.codespeak.net> Author: pedronis Date: Wed Oct 1 14:05:08 2003 New Revision: 1501 Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py pypy/trunk/src/pypy/translator/flowmodel.py Log: add hash for SpaceOperation moved equality to flowmodel Constant added hash to flowmodel Constant Modified: pypy/trunk/src/pypy/objspace/flow/wrapper.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/wrapper.py (original) +++ pypy/trunk/src/pypy/objspace/flow/wrapper.py Wed Oct 1 14:05:08 2003 @@ -68,9 +68,6 @@ def unwrap(self): return self.value - def __eq__(self, other): - return type(other) is type(self) and self.value == other.value - def __len__(self): return len(self.value) Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 14:05:08 2003 @@ -25,7 +25,13 @@ class Constant: def __init__(self, value): self.value = value - + + def __eq__(self, other): + return type(other) is type(self) and self.value == other.value + + def __hash__(self): + return hash(self.value) + def __repr__(self): return str(self.value) @@ -41,6 +47,10 @@ self.args == other.args and self.result == other.result) + def __hash__(self): + return hash((self.opname,tuple(self.args),self.result)) + + def __repr__(self): return "%s(%s) -> %s" % (self.opname, ", ".join(map(str, self.args)), self.result) From pedronis at codespeak.net Wed Oct 1 17:22:51 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 1 Oct 2003 17:22:51 +0200 (MEST) Subject: [pypy-svn] rev 1502 - pypy/trunk/src/pypy/translator Message-ID: <20031001152251.E3C515A2A9@thoth.codespeak.net> Author: pedronis Date: Wed Oct 1 17:22:51 2003 New Revision: 1502 Added: pypy/trunk/src/pypy/translator/annotation.py Modified: pypy/trunk/src/pypy/translator/flowmodel.py Log: start of type annotation. Added: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/annotation.py Wed Oct 1 17:22:51 2003 @@ -0,0 +1,107 @@ +from pypy.translator.flowmodel import * + +class GraphGlobalVariable(Variable): + pass + +def get_type(w,annotations): + if isinstance(w,Constant): + return type(w.value) + for ann in annotations: + if ann.opname == 'type' and list(ann.args) == [var] and isinstance(ann.result,Constant): + return ann.result.value + return None + +def set_type(var,type,annotations): + ann = SpaceOperation("type",[var],Constant(type)) + annotations.append(ann) + + +def annotate(flowgraph): + annotator = Annotator(flowgraph) + annotator.flowin() + +class Annotator: + + def __init__(self, flowgraph): + self.flowgraph = flowgraph + + def build_annotations(self,input_annotations): + self.annotated = {} + self.flowin(self.flowgraph.startblock,input_annotations) + return self.annotated + + def flownext(self,branch,curblock): + getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) + + def flowin(self, block, annotations): + if block not in self.annotated: + self.annotated[block] = annotations[:] + else: + oldannotations = block.annotations + newannotations = self.unify(oldannotations,annotations) + if newannotations == oldannotations: + return + self.annotated[block] = newannotations + + for op in block.operations: + self.consider_op(op,self.annotated[block]) + self.flownext(block.branch,block) + + def consider_op(self,op,annotations): + consider_meth = getattr(self,'consider_op_'+op.opname,None) + if consider_meth is not None: + consider_meth(op,annotations) + + def consider_op_add(self,op,annotations): + arg1,arg2 = op.args + type1 = get_type(arg1,annotations) + type2 = get_type(arg2,annotations) + if type1 == int and type2 == int: + set_type(op.result,int,annotations) + + consider_op_sub = consider_op_add + + def consider_const(self,to_var,const,annotations): + set_type(to_var,type(const.value),annotations) + + def flownext_Branch(self,branch,curblock): + + renaming = {} + newannotations = [] + + for w_from,w_to in zip(branch.args,branch.target.input_args): + if isinstance(w_from,Variable): + renaming[w_from] = w_to + else: + self.consider_const(w_to,w_from,newannotations) + + def rename(w): + if isinstance(w,Constant): + return w + if isinstance(w,GraphGlobalVariable): + return w + else + return renaming[w] + + for ann in self.annotated[curblock]: + try: + result = rename(ann.result) + args = [ rename(arg) for arg in ann.args ] + except KeyError: + pass + else: + newannotations.append(SpaceOperation(ann.opname,args,result)) + + self.flowin(branch.target,newannotations) + + def flownext_ConditionalBranch(self,branch,curblock): + self.flownext(branch.ifbranch,block) + self.flownext(branch.elsebranch,block) + + def flownext_EndBranch(self,branch,curblock): + pass # XXX + + def unify(self,oldannotations,annotations): + return [ ann for ann in oldannotations if ann in annotations] + + Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 17:22:51 2003 @@ -80,3 +80,5 @@ self.startblock = startblock self.functionname = functionname + def get_args(self): + return self.startblock.input_args From pedronis at codespeak.net Wed Oct 1 17:25:57 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 1 Oct 2003 17:25:57 +0200 (MEST) Subject: [pypy-svn] rev 1503 - pypy/trunk/src/pypy/translator Message-ID: <20031001152557.C5D315A2A9@thoth.codespeak.net> Author: pedronis Date: Wed Oct 1 17:25:57 2003 New Revision: 1503 Modified: pypy/trunk/src/pypy/translator/annotation.py Log: removed spurious stuff. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Wed Oct 1 17:25:57 2003 @@ -14,11 +14,6 @@ def set_type(var,type,annotations): ann = SpaceOperation("type",[var],Constant(type)) annotations.append(ann) - - -def annotate(flowgraph): - annotator = Annotator(flowgraph) - annotator.flowin() class Annotator: From arigo at codespeak.net Wed Oct 1 17:44:48 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 1 Oct 2003 17:44:48 +0200 (MEST) Subject: [pypy-svn] rev 1504 - in pypy/trunk/src/pypy: tool translator translator/test Message-ID: <20031001154448.2050C5A2A9@thoth.codespeak.net> Author: arigo Date: Wed Oct 1 17:44:47 2003 New Revision: 1504 Added: pypy/trunk/src/pypy/translator/test/test_annotation.py (contents, props changed) Modified: pypy/trunk/src/pypy/tool/udir.py (props changed) pypy/trunk/src/pypy/translator/annotation.py (contents, props changed) Log: All three tests pass for type inference Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Wed Oct 1 17:44:47 2003 @@ -7,10 +7,10 @@ if isinstance(w,Constant): return type(w.value) for ann in annotations: - if ann.opname == 'type' and list(ann.args) == [var] and isinstance(ann.result,Constant): + if ann.opname == 'type' and list(ann.args) == [w] and isinstance(ann.result,Constant): return ann.result.value return None - + def set_type(var,type,annotations): ann = SpaceOperation("type",[var],Constant(type)) annotations.append(ann) @@ -22,9 +22,15 @@ def build_annotations(self,input_annotations): self.annotated = {} + self.endblock = BasicBlock([Variable('_return_value')], [], [], None) self.flowin(self.flowgraph.startblock,input_annotations) return self.annotated + def end_annotations(self): + "Returns (return_value_Variable(), annotations_list)." + # XXX what if self.endblock not in self.annotated? + return self.endblock.input_args[0], self.annotated[self.endblock] + def flownext(self,branch,curblock): getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) @@ -32,15 +38,16 @@ if block not in self.annotated: self.annotated[block] = annotations[:] else: - oldannotations = block.annotations + oldannotations = self.annotated[block] newannotations = self.unify(oldannotations,annotations) if newannotations == oldannotations: return self.annotated[block] = newannotations for op in block.operations: - self.consider_op(op,self.annotated[block]) - self.flownext(block.branch,block) + self.consider_op(op,self.annotated[block]) + if block is not self.endblock: + self.flownext(block.branch,block) def consider_op(self,op,annotations): consider_meth = getattr(self,'consider_op_'+op.opname,None) @@ -75,7 +82,7 @@ return w if isinstance(w,GraphGlobalVariable): return w - else + else: return renaming[w] for ann in self.annotated[curblock]: @@ -90,11 +97,12 @@ self.flowin(branch.target,newannotations) def flownext_ConditionalBranch(self,branch,curblock): - self.flownext(branch.ifbranch,block) - self.flownext(branch.elsebranch,block) + self.flownext(branch.ifbranch,curblock) + self.flownext(branch.elsebranch,curblock) def flownext_EndBranch(self,branch,curblock): - pass # XXX + branch = Branch([branch.returnvalue], self.endblock) + self.flownext_Branch(branch,curblock) def unify(self,oldannotations,annotations): return [ ann for ann in oldannotations if ann in annotations] Added: pypy/trunk/src/pypy/translator/test/test_annotation.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_annotation.py Wed Oct 1 17:44:47 2003 @@ -0,0 +1,114 @@ + +import autopath +from pypy.tool import test +from pypy.tool.udir import udir + +from pypy.translator.annotation import Annotator, set_type, get_type +from pypy.translator.flowmodel import * + +class TestCase(test.IntTestCase): + def test_simple_func(self): + """ + one test source: + def f(x): + return x+1 + """ + x = Variable("x") + result = Variable("result") + op = SpaceOperation("add", [x, Constant(1)], result) + endbranch = EndBranch(result) + block = BasicBlock([x], [x], + [op], + endbranch) + fun = FunctionGraph(block, "f") + a = Annotator(fun) + input_ann = [] + set_type(fun.get_args()[0], int, input_ann) + a.build_annotations(input_ann) + end_var, end_ann = a.end_annotations() + self.assertEquals(get_type(end_var, end_ann), int) + + def test_while(self): + """ + one test source: + def f(i): + while i > 0: + i = i - 1 + return i + """ + i = Variable("i") + conditionres = Variable("conditionres") + conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) + decop = SpaceOperation("add", [i, Constant(-1)], i) + + conditionbranch = ConditionalBranch() + headerbranch = Branch() + whileblock = BasicBlock([i], [i], [decop], headerbranch) + whilebranch = Branch([i], whileblock) + endbranch = EndBranch(i) + conditionbranch.set(conditionres, whilebranch, endbranch) + + headerblock = BasicBlock([i], [i, conditionres], + [conditionop], conditionbranch) + + headerbranch.set([i], headerblock) + + startblock = BasicBlock([i], [i], + [], headerbranch) + + fun = FunctionGraph(startblock, "f") + + a = Annotator(fun) + input_ann = [] + set_type(fun.get_args()[0], int, input_ann) + a.build_annotations(input_ann) + end_var, end_ann = a.end_annotations() + self.assertEquals(get_type(end_var, end_ann), int) + + def test_while_sum(self): + """ + one test source: + def f(i): + sum = 0 + while i > 0: + sum = sum + i + i = i - 1 + return sum + """ + i = Variable("i") + sum = Variable("sum") + + conditionres = Variable("conditionres") + conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) + decop = SpaceOperation("add", [i, Constant(-1)], i) + addop = SpaceOperation("add", [i, sum], sum) + + conditionbranch = ConditionalBranch() + headerbranch = Branch() + headerbranch2 = Branch() + whileblock = BasicBlock([i, sum], [i, sum], [addop, decop], headerbranch2) + whilebranch = Branch([i, sum], whileblock) + + endbranch = EndBranch(sum) + conditionbranch.set(conditionres, whilebranch, endbranch) + + headerblock = BasicBlock([i, sum], [i, conditionres], + [conditionop], conditionbranch) + + headerbranch.set([i, Constant(0)], headerblock) + headerbranch2.set([i, sum], headerblock) + startblock = BasicBlock([i], [i, sum], + [], headerbranch) + + fun = FunctionGraph(startblock, "f") + + a = Annotator(fun) + input_ann = [] + set_type(fun.get_args()[0], int, input_ann) + import sys; print >> sys.stderr, a.build_annotations(input_ann) + end_var, end_ann = a.end_annotations() + self.assertEquals(get_type(end_var, end_ann), int) + + +if __name__ == '__main__': + test.main() From dinu at codespeak.net Wed Oct 1 18:35:09 2003 From: dinu at codespeak.net (dinu at codespeak.net) Date: Wed, 1 Oct 2003 18:35:09 +0200 (MEST) Subject: [pypy-svn] rev 1505 - pypy/trunk/doc/funding Message-ID: <20031001163509.E794C5A2A9@thoth.codespeak.net> Author: dinu Date: Wed Oct 1 18:35:09 2003 New Revision: 1505 Modified: pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt Log: added some text Modified: pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt Wed Oct 1 18:35:09 2003 @@ -29,19 +29,24 @@ **Description of work** -*Part a):* - - - work with stackless results *FIXME: write this* - -*Part b):* - - - use the whole optimized thing *FIXME: write this* +- Provide decentralized network architecture for routing and processing computational tasks +- Investigate use of statistical network information for load balancing +- Compare with information obtained by probing the network +- Distribute workload accordingly to available resources +- Implement distribution on different levels (tasks, entire object spaces) +- Make network nodes attachable and detachable at runtime +- Reassign unfinished tasks to other nodes +- Study effects of different routing topologies +- Investigate restrictions on network nodes for untrusted code .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +- Network service running on a variatey of nodes +- PyPy runtime distributing workload on the network + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From hpk at codespeak.net Wed Oct 1 18:56:08 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 18:56:08 +0200 (MEST) Subject: [pypy-svn] rev 1506 - pypy/trunk/src/pypy/translator/test Message-ID: <20031001165608.109545A2A9@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 18:56:07 2003 New Revision: 1506 Added: pypy/trunk/src/pypy/translator/test/test_flowmodel.py Log: some tests for jonathan's new flowmodel-methods (flatten/visit) Added: pypy/trunk/src/pypy/translator/test/test_flowmodel.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_flowmodel.py Wed Oct 1 18:56:07 2003 @@ -0,0 +1,36 @@ + +import autopath +from pypy.tool import test +from pypy.translator.flowmodel import * + +class TestFlowModel(test.IntTestCase): + def test_flatten(self): + result = Variable("result") + endbranch = EndBranch(result) + block = BasicBlock([result], [result], + [], + endbranch) + fun = FunctionGraph(block, "f") + + nodelist = fun.flatten() + self.assert_(endbranch in nodelist) + self.assert_(block in nodelist) + self.assert_(result not in nodelist) + + def test_flatten_more(self): + result = Variable("result") + endbranch = EndBranch(result) + block2 = BasicBlock([result], [result], [], endbranch) + branch = Branch([result], block2) + block = BasicBlock([result], [result], [], branch) + fun = FunctionGraph(block, "f") + + nodelist = fun.flatten() + self.assert_(endbranch in nodelist) + self.assert_(block in nodelist) + self.assert_(block2 in nodelist) + self.assert_(branch in nodelist) + self.assert_(result not in nodelist) + +if __name__ == '__main__': + test.main() From jriehl at codespeak.net Wed Oct 1 18:58:34 2003 From: jriehl at codespeak.net (jriehl at codespeak.net) Date: Wed, 1 Oct 2003 18:58:34 +0200 (MEST) Subject: [pypy-svn] rev 1507 - pypy/trunk/src/pypy/translator Message-ID: <20031001165834.5CDF05A2A9@thoth.codespeak.net> Author: jriehl Date: Wed Oct 1 18:58:33 2003 New Revision: 1507 Modified: pypy/trunk/src/pypy/translator/flowmodel.py Log: Adding additional graph utility methods to the flow model. Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 18:58:33 2003 @@ -4,13 +4,33 @@ of the classes in this module the translator parts will only look into the attributes defined here. """ -class BasicBlock: +class FlowNode: + def getedges(self): + raise NotImplementedError, "Abstract base class" + + def flatten(self): + nodedict = self.visit(lambda x: None) + return nodedict.keys() + + def visit(self, fn, _visited = None): + if _visited is None: + _visited = {} + _visited[self] = fn(self) + for targetnode in self.getedges(): + if not _visited.has_key(targetnode): + targetnode.visit(fn, _visited) + return _visited + +class BasicBlock(FlowNode): def __init__(self, input_args, locals, operations, branch=None): self.input_args = input_args self.locals = locals self.operations = operations self.branch = branch + def getedges(self): + return [self.branch] + def closeblock(self, branch): self.operations = tuple(self.operations) # should no longer change self.branch = branch @@ -54,27 +74,36 @@ def __repr__(self): return "%s(%s) -> %s" % (self.opname, ", ".join(map(str, self.args)), self.result) -class Branch: +class Branch(FlowNode): def __init__(self, args=None, target=None): self.set(args, target) + def getedges(self): + return [self.target] + def set(self, args, target): self.args = args # list of variables self.target = target # basic block instance -class ConditionalBranch: +class ConditionalBranch(FlowNode): def __init__(self, condition=None, ifbranch=None, elsebranch=None): self.set(condition, ifbranch, elsebranch) + def getedges(self): + return [self.ifbranch, self.elsebranch] + def set(self, condition, ifbranch, elsebranch): self.condition = condition self.ifbranch = ifbranch self.elsebranch = elsebranch -class EndBranch: +class EndBranch(FlowNode): def __init__(self, returnvalue): self.returnvalue = returnvalue + def getedges(self): + return [] + class FunctionGraph: def __init__(self, startblock, functionname): self.startblock = startblock @@ -82,3 +111,6 @@ def get_args(self): return self.startblock.input_args + + def flatten(self): + return self.startblock.flatten() From hpk at codespeak.net Wed Oct 1 19:18:53 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 19:18:53 +0200 (MEST) Subject: [pypy-svn] rev 1508 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001171853.DA5505A2A9@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 19:18:50 2003 New Revision: 1508 Modified: pypy/trunk/src/pypy/translator/flowmodel.py pypy/trunk/src/pypy/translator/test/test_flowmodel.py Log: added a few tests for the new 'mkentrymap' which gets a dict with entrypoints Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 19:18:50 2003 @@ -114,3 +114,11 @@ def flatten(self): return self.startblock.flatten() + + def mkentrymap(self): + """Create a map from nodes in the graph to back edge lists""" + entrymap = {} + for node in self.flatten(): + for edge in node.getedges(): + entrymap.setdefault(edge, []).append(node) + return entrymap Modified: pypy/trunk/src/pypy/translator/test/test_flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/test/test_flowmodel.py Wed Oct 1 19:18:50 2003 @@ -17,6 +17,16 @@ self.assert_(block in nodelist) self.assert_(result not in nodelist) + def test_backedge_simple(self): + result = Variable("result") + endbranch = EndBranch(result) + block = BasicBlock([result], [result], + [], + endbranch) + fun = FunctionGraph(block, "f") + em = fun.mkentrymap() + self.assertEquals(em[endbranch], [block]) + def test_flatten_more(self): result = Variable("result") endbranch = EndBranch(result) @@ -32,5 +42,19 @@ self.assert_(branch in nodelist) self.assert_(result not in nodelist) + def test_backedge_conditional(self): + result = Variable("result") + endbranch = EndBranch(result) + block3 = BasicBlock([result], [result], [], endbranch) + block2 = BasicBlock([result], [result], [], endbranch) + condbranch = ConditionalBranch([result], block2, block3) + block = BasicBlock([result], [result], [], condbranch) + fun = FunctionGraph(block, "f") + + em = fun.mkentrymap() + self.assert_(block2 in em[endbranch]) + self.assert_(block3 in em[endbranch]) + self.assertEquals(em[condbranch], [block]) + if __name__ == '__main__': test.main() From arigo at codespeak.net Wed Oct 1 19:25:17 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 1 Oct 2003 19:25:17 +0200 (MEST) Subject: [pypy-svn] rev 1509 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001172517.0B1825A2A9@thoth.codespeak.net> Author: arigo Date: Wed Oct 1 19:25:17 2003 New Revision: 1509 Added: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (contents, props changed) Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/genpyrex.py Log: Emitting type-optimized Pyrex code successfully Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Wed Oct 1 19:25:17 2003 @@ -39,7 +39,9 @@ self.annotated[block] = annotations[:] else: oldannotations = self.annotated[block] + #import sys; print >> sys.stderr, block, oldannotations, annotations, newannotations = self.unify(oldannotations,annotations) + #import sys; print >> sys.stderr, newannotations if newannotations == oldannotations: return self.annotated[block] = newannotations @@ -73,32 +75,44 @@ for w_from,w_to in zip(branch.args,branch.target.input_args): if isinstance(w_from,Variable): - renaming[w_from] = w_to + renaming.setdefault(w_from, []).append(w_to) else: self.consider_const(w_to,w_from,newannotations) def rename(w): if isinstance(w,Constant): - return w + return [w] if isinstance(w,GraphGlobalVariable): - return w + return [w] else: - return renaming[w] + return renaming.get(w, []) - for ann in self.annotated[curblock]: - try: - result = rename(ann.result) - args = [ rename(arg) for arg in ann.args ] - except KeyError: - pass + def renameall(list_w): + if list_w: + for w in rename(list_w[0]): + for tail_w in renameall(list_w[1:]): + yield [w] + tail_w else: + yield [] + + for ann in self.annotated[curblock]: + # we translate a single SpaceOperation(...) into either + # 0 or 1 or multiple ones, by replacing each variable + # used in the original operation by (in turn) any of + # the variables it can be renamed into + for list_w in renameall([ann.result] + ann.args): + result = list_w[0] + args = list_w[1:] newannotations.append(SpaceOperation(ann.opname,args,result)) self.flowin(branch.target,newannotations) def flownext_ConditionalBranch(self,branch,curblock): - self.flownext(branch.ifbranch,curblock) - self.flownext(branch.elsebranch,curblock) + # XXX this hack depends on the fact that ConditionalBranches + # XXX point to two EggBlocks with *no* renaming necessary + curannotations = self.annotated[curblock] + self.flowin(branch.ifbranch.target,curannotations) + self.flowin(branch.elsebranch.target,curannotations) def flownext_EndBranch(self,branch,curblock): branch = Branch([branch.returnvalue], self.endblock) Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Wed Oct 1 19:25:17 2003 @@ -6,6 +6,7 @@ from pypy.tool import test from pypy.interpreter.baseobjspace import ObjSpace from pypy.translator.flowmodel import * +from pypy.translator.annotation import Annotator, set_type, get_type class GenPyrex: def __init__(self, functiongraph): @@ -17,9 +18,19 @@ oparity[opname] = arity self.ops = ops self.oparity = oparity + self.annotations = {} + + def annotate(self, input_arg_types): + a = Annotator(self.functiongraph) + input_ann = [] + for arg, arg_type in zip(self.functiongraph.get_args(), + input_arg_types): + set_type(arg, arg_type, input_ann) + self.annotations = a.build_annotations(input_ann) def emitcode(self): self.blockids = {} + self.variablelocations = {} self.lines = [] self.indent = 0 self.gen_Graph() @@ -30,16 +41,49 @@ def gen_Graph(self): fun = self.functiongraph - inputargnames = [ var.pseudoname for var in fun.startblock.input_args ] - params = ", ".join(inputargnames) - self.putline("def %s(%s):" % (fun.functionname, params)) + currentlines = self.lines + self.lines = [] self.indent += 1 self.gen_BasicBlock(fun.startblock) self.indent -= 1 + # emit the header after the body + functionbodylines = self.lines + self.lines = currentlines + inputargnames = [ self._declvar(var) for var in fun.startblock.input_args ] + params = ", ".join(inputargnames) + self.putline("def %s(%s):" % (fun.functionname, params)) + self.indent += 1 + #self.putline("# %r" % self.annotations) + for var in self.variablelocations: + if var not in fun.startblock.input_args: + self.putline("cdef %s" % self._declvar(var)) + self.indent -= 1 + self.lines.extend(functionbodylines) + + def get_type(self, var): + block = self.variablelocations.get(var) + ann = self.annotations.get(block, []) + return get_type(var, ann) + + def get_varname(self, var): + if self.get_type(var) == int: + prefix = "i_" + else: + prefix = "" + return prefix + var.pseudoname + + def _declvar(self, var): + vartype = self.get_type(var) + if vartype == int: + ctype = "int " + else: + ctype = "object " + return ctype + self.get_varname(var) - def _str(self, obj): + def _str(self, obj, block): if isinstance(obj, Variable): - return obj.pseudoname + self.variablelocations[obj] = block + return self.get_varname(obj) elif isinstance(obj, Constant): return repr(obj.value) else: @@ -59,40 +103,39 @@ opsymbol = self.ops[op.opname] arity = self.oparity[op.opname] assert(arity == len(op.args)) - argnames = [self._str(arg) for arg in op.args] + argnames = [self._str(arg, block) for arg in op.args] if arity == 1 or arity == 3 or "a" <= opsymbol[0] <= "z": - - self.putline("%s = %s(%s)" % (op.result.pseudoname, opsymbol, ", ".join([argnames]))) + self.putline("%s = %s(%s)" % (self._str(op.result, block), opsymbol, ", ".join(argnames))) else: - self.putline("%s = %s %s %s" % (op.result.pseudoname, argnames[0], opsymbol, argnames[1])) + self.putline("%s = %s %s %s" % (self._str(op.result, block), argnames[0], opsymbol, argnames[1])) - self.dispatchBranch(block.branch) + self.dispatchBranch(block, block.branch) - def dispatchBranch(self, branch): + def dispatchBranch(self, prevblock, branch): method = getattr(self, "gen_" + branch.__class__.__name__) - method(branch) + method(prevblock, branch) - def gen_Branch(self, branch): + def gen_Branch(self, prevblock, branch): _str = self._str block = branch.target - sourceargs = [_str(arg) for arg in branch.args] - targetargs = [arg.pseudoname for arg in block.input_args] + sourceargs = [_str(arg, prevblock) for arg in branch.args] + targetargs = [_str(arg, branch.target) for arg in block.input_args] assert(len(sourceargs) == len(targetargs)) if sourceargs and sourceargs != targetargs: self.putline("%s = %s" % (", ".join(targetargs), ", ".join(sourceargs))) self.gen_BasicBlock(block) - def gen_EndBranch(self, branch): - self.putline("return %s" % self._str(branch.returnvalue)) + def gen_EndBranch(self, prevblock, branch): + self.putline("return %s" % self._str(branch.returnvalue, prevblock)) - def gen_ConditionalBranch(self, branch): - self.putline("if %s:" % self._str(branch.condition)) + def gen_ConditionalBranch(self, prevblock, branch): + self.putline("if %s:" % self._str(branch.condition, prevblock)) self.indent += 1 - self.dispatchBranch(branch.ifbranch) + self.dispatchBranch(prevblock, branch.ifbranch) self.indent -= 1 self.putline("else:") self.indent += 1 - self.dispatchBranch(branch.elsebranch) + self.dispatchBranch(prevblock, branch.elsebranch) self.indent -= 1 Added: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Wed Oct 1 19:25:17 2003 @@ -0,0 +1,100 @@ + +import autopath +from pypy.tool import test +from pypy.tool.udir import udir +from pypy.translator.genpyrex import GenPyrex +from pypy.translator.flowmodel import * +from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring + +make_dot = 1 + +if make_dot: + from pypy.translator.test.make_dot import make_dot +else: + def make_dot(*args): pass + +class TestCase(test.IntTestCase): + def setUp(self): + self.space = test.objspace('flow') + + def make_cfunc(self, func, input_arg_types): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + name = func.func_name + funcgraph = self.space.build_flow(func) + funcgraph.source = inspect.getsource(func) + genpyrex = GenPyrex(funcgraph) + genpyrex.annotate(input_arg_types) + result = genpyrex.emitcode() + make_dot(funcgraph, udir, 'ps') + mod = make_module_from_pyxstring(name, udir, result) + return getattr(mod, name) + + #____________________________________________________ + def simple_func(i): + return i+1 + + def test_simple_func(self): + cfunc = self.make_cfunc(self.simple_func, [int]) + self.assertEquals(cfunc(1), 2) + + #____________________________________________________ + def while_func(i): + total = 0 + while i > 0: + total = total + i + i = i - 1 + return total + + def test_while_func(self): + while_func = self.make_cfunc(self.while_func, [int]) + self.assertEquals(while_func(10), 55) + + #____________________________________________________ + def yast(lst): + total = 0 + for z in lst: + total += z + return total + + def dont_test_yast(self): + yast = self.make_cfunc(self.yast, [list]) + self.assertEquals(yast(range(11)), 66) + + #____________________________________________________ + def nested_whiles(i, j): + s = '' + z = 5 + while z > 0: + z = z - 1 + u = i + while u < j: + u = u + 1 + s = s + '.' + s = s + '!' + return s + + def test_nested_whiles(self): + nested_whiles = self.make_cfunc(self.nested_whiles, [int, int]) + self.assertEquals(nested_whiles(111, 114), + '...!...!...!...!...!') + + #____________________________________________________ + def poor_man_range(i): + lst = [] + while i > 0: + i = i - 1 + lst.append(i) + lst.reverse() + return lst + + def dont_yet_test_poor_man_range(self): + poor_man_range = self.make_cfunc(self.poor_man_range, [int]) + self.assertEquals(poor_man_range(10), range(10)) + +if __name__ == '__main__': + test.main() From tismer at codespeak.net Wed Oct 1 19:52:07 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 1 Oct 2003 19:52:07 +0200 (MEST) Subject: [pypy-svn] rev 1510 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031001175207.BCA415A2A9@thoth.codespeak.net> Author: tismer Date: Wed Oct 1 19:52:05 2003 New Revision: 1510 Added: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw (contents, props changed) Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/makedoc/mkdoclist.py pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/zipmod.py Log: fighting the numbering Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Wed Oct 1 19:52:05 2003 @@ -58,91 +58,27 @@ List of participants +================ ===================== ======================= Participant no. Participant name Participant short name +================ ===================== ======================= 1 (coordinator) +---------------- --------------------- ----------------------- 2 +---------------- --------------------- ----------------------- 3 +---------------- --------------------- ----------------------- 4 +---------------- --------------------- ----------------------- etc +================ ===================== ======================= Coordinator name -Coordinator organisation name -Coordinator email -Coordinator fax - -Contents -========= +Coordinator organisation name -:CONTENTS: +Coordinator email -Proposal Summary Page -======================= +Coordinator fax -**Proposal full title:** - - The full title of the Proposal is 'Pypy: A flexible, modular, - self-hosting, next-generation specialising compiler for the - Open Source Programming Language Python'. - -**Proposal acronym:** - - The proposal acronym is PYPY. - -**Strategic Objectives:** - - This proposal directly addresses the Strategic Objective - IST-2002-2.3.2.3 - 'Open development platforms for software and - services' of the Second Call of the Information Society - Technologies Workprogramme. Since this is foundational applied - research, focusing on fundamental design concepts, it will have - significant indirect effects wherever the Python programming - langauge is taught or deployed. It will reduce the current wide - gap between academic computer science and industrial programming - tools, thus contributing to European competitiveness and prosperity, - and enhancing openness and security in the public and private - sector. - -**Proposal abstract:** - -:DELETE:BEGIN - -copied from Part A - -(Actually, we will paste this one INTO Part A) - -:DELETE:END - -The PyPy project will build a flexible, modular, context-aware -implementation of the Open Source programming language Python written -in itself. Python is already a very popular Object-Oriented -Very-High-Level interpreted programming language. - -(FN -- Usage statistics indicate that Python ranks sixth in usage -world-wide, after Java, Visual Basic, C, C++, and Perl) - -But the current state-of-the-Art, both in Python and in Computer -Languages in general does not best serve the new needs of the creators -of embedded, networked and distributed software sectors. They have -long needed a language which was more flexible, easier to reduce to -its 'bare-bones' for embedding, and which could dynamically -reconfigure itself and balance loads at the interpreter level. -Consequently, the PyPy project is a collaboration between academic -researchers, who have the skill and vision to produce a new runtime -language architecture for the twenty-first century, SME software and -service providers, who wish to deploy PyPy in their innovative new -business ventures, and older established industrial users who would -like to embed a PyPy application on their ubiquitous products, such as -home entertainment systems or commercial computer printers. - -The project will go through four phases. In the first phase, we will -build a complete PyPy Interpreter. In the second phase, we will build -a complete PyPy compiler that compiles itself. While our new -architecture of Object Spaces can here be considered innovative, this -two phases can be looked at as a way to only produce a state-of-the-Art -implementation of the Python programming language. We will go beyond -this in Phase three, and produce a High-Performance PyPy, which goes -beyond the State of the Art and particularily addresses our modern -needs. Finally in Phase four, we will Validate our design choices -by .... +.. put this before the TOC Modified: pypy/trunk/doc/funding/makedoc/mkdoclist.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/mkdoclist.py (original) +++ pypy/trunk/doc/funding/makedoc/mkdoclist.py Wed Oct 1 19:52:05 2003 @@ -116,23 +116,31 @@ if name.startswith("wp-") and name.endswith(".asc"): tempfile(name, "w").write(file(os.path.join("..", name)).read()) +def create_oo_doc(): + from win32com.client import Dispatch + objServiceManager= Dispatch("com.sun.star.ServiceManager") + objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") + objDocument= objDesktop.loadComponentFromURL(r"file:///D|/pypy/trunk/doc/funding/makedoc/prep_part_b.sxw", "_blank", 0, ()) + #wonder = objDesktop.loadComponentFromURL(r"macro://./Standard.test_import.build_doc", "_blank", 0, ()) + prog = r"E:\Programme\OpenOffice.org1.1.0\program\soffice.exe" + args = "macro://./Standard.test_import.build_doc" + os.system(prog+" "+args) + objDocument.close(1) # 1 = give up ownership + def make_doc(): build_xref_file() copy_ascfiles() names = get_file_list() make_new_files(names) make_doc_list(names) - sys.argv=[sys.argv[0], "--no-xml-declaration"] - execfile("d:/python22/docutils/tools/buildhtml.py") - from win32com.client import Dispatch - objServiceManager= Dispatch("com.sun.star.ServiceManager") - objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") - objDocument= objDesktop.loadComponentFromURL(r"file:///D|/pypy/trunk/doc/funding/makedoc/part_b.sxw", "_blank", 0, ()) - return + os.system("python d:/python22/docutils/tools/buildhtml.py --no-xml-declaration") + #return + create_oo_doc() for name in tempfiles: os.unlink(name) if name.endswith(".txt"): os.unlink(os.path.splitext(name)[0]+".html") + os.system("python zipmod.py part_b.sxw") if __name__ == "__main__": make_doc() \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Added: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/makedoc/zipmod.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/zipmod.py (original) +++ pypy/trunk/doc/funding/makedoc/zipmod.py Wed Oct 1 19:52:05 2003 @@ -68,7 +68,9 @@ # rebuild a copy of the original ZIP file from tmp. dir. name,end = os.path.splitext(docPath) - newpath = name+'_cp'+end + # newpath = name+'_cp'+end + # CT do it in place, we are working on a copy anyway + newpath = docPath zip = zipfile.ZipFile(newpath, 'w', zipfile.ZIP_DEFLATED) for fn in filenames: destPath = os.path.join(tmp, fn.replace('/',os.sep)) From arigo at codespeak.net Wed Oct 1 19:54:46 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 1 Oct 2003 19:54:46 +0200 (MEST) Subject: [pypy-svn] rev 1511 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001175446.77BE95A2A9@thoth.codespeak.net> Author: arigo Date: Wed Oct 1 19:54:45 2003 New Revision: 1511 Modified: pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: Check-in Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Wed Oct 1 19:54:45 2003 @@ -100,14 +100,49 @@ self.putline('cinline "Label%s:"' % blockids[block]) for op in block.operations: - opsymbol = self.ops[op.opname] - arity = self.oparity[op.opname] - assert(arity == len(op.args)) argnames = [self._str(arg, block) for arg in op.args] - if arity == 1 or arity == 3 or "a" <= opsymbol[0] <= "z": - self.putline("%s = %s(%s)" % (self._str(op.result, block), opsymbol, ", ".join(argnames))) + resultname = self._str(op.result, block) + # XXX refactor me + if op.opname == 'next_and_flag': + self.putline("try:") + self.putline(" _nextval = %s.next()" % argnames[0]) + self.putline("except StopIteration:") + self.putline(" %s = None, 0" % resultname) + self.putline("else:") + self.putline(" %s = _nextval, 1" % resultname) + elif op.opname == 'getitem': + self.putline("%s = %s[%s]" % (resultname, argnames[0], + argnames[1])) + elif op.opname == 'newtuple': + self.putline("%s = (%s)" % ( + resultname, "".join([s+", " for s in argnames]))) + elif op.opname == 'newlist': + self.putline("%s = [%s]" % ( + resultname, "".join([s+", " for s in argnames]))) + elif op.opname == 'newdict': + pairs = [] + for i in range(0, len(argnames), 2): + pairs.append("%s: %s, " % (argnames[i], argnames[i+1])) + self.putline("%s = {%s}" % (resultname, "".join(pairs))) + elif op.opname == 'call': + self.putline("%s = %s(*%s, **%s)" % (resultname, argnames[0], + argnames[1], argnames[2])) else: - self.putline("%s = %s %s %s" % (self._str(op.result, block), argnames[0], opsymbol, argnames[1])) + opsymbol = self.ops[op.opname] + arity = self.oparity[op.opname] + assert(arity == len(op.args)) + if arity == 1 or arity == 3 or "a" <= opsymbol[0] <= "z": + self.putline("%s = %s(%s)" % (resultname, opsymbol, + ", ".join(argnames))) + elif opsymbol[-1] == '=': + # in-place operator + self.putline("%s = %s; %s += %s" % ( + resultname, argnames[0], + resultname, argnames[1])) + else: + # infix operator + self.putline("%s = %s %s %s" % (resultname, argnames[0], + opsymbol, argnames[1])) self.dispatchBranch(block, block.branch) Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Wed Oct 1 19:54:45 2003 @@ -79,7 +79,7 @@ lst.reverse() return lst - def dont_yet_test_poor_man_range(self): + def test_poor_man_range(self): poor_man_range = self.make_cfunc(self.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Wed Oct 1 19:54:45 2003 @@ -58,12 +58,12 @@ def yast(lst): total = 0 for z in lst: - total += z + total = total + z return total - def dont_test_yast(self): + def test_yast(self): yast = self.make_cfunc(self.yast, [list]) - self.assertEquals(yast(range(11)), 66) + self.assertEquals(yast(range(12)), 66) #____________________________________________________ def nested_whiles(i, j): @@ -92,7 +92,7 @@ lst.reverse() return lst - def dont_yet_test_poor_man_range(self): + def test_poor_man_range(self): poor_man_range = self.make_cfunc(self.poor_man_range, [int]) self.assertEquals(poor_man_range(10), range(10)) From hpk at codespeak.net Wed Oct 1 21:11:48 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 21:11:48 +0200 (MEST) Subject: [pypy-svn] rev 1512 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001191148.4AF305A486@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 21:11:47 2003 New Revision: 1512 Added: pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_simplify.py Modified: pypy/trunk/src/pypy/translator/flowmodel.py Log: added jonathan's eliminate_empty_blocks function + some tests we came up with (which are hard to read) Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 21:11:47 2003 @@ -117,7 +117,7 @@ def mkentrymap(self): """Create a map from nodes in the graph to back edge lists""" - entrymap = {} + entrymap = { self.startblock: []} for node in self.flatten(): for edge in node.getedges(): entrymap.setdefault(edge, []).append(node) Added: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/simplify.py Wed Oct 1 21:11:47 2003 @@ -0,0 +1,55 @@ +""" +generate Pyrex files from the flowmodel. + +""" +import autopath +from pypy.tool import test +from pypy.interpreter.baseobjspace import ObjSpace +from pypy.translator.flowmodel import * + + +def eliminate_empty_blocks(graph): + """simplify_vars() + Things we know we can remove: + 1. Basic blocks that do not contain any operations. + When this happens, we need to replace the preceeding branch with the + following branch. Arguments of the following branch should be + overwritten with the arguments of the preceeding branch, but any + additional arguments should be kept. + 2. Branches into basic blocks that have a single entry point. + At this point, we can append all the operations of the following basic + block to the preceeding basic block (but renaming variables with the + appropriate arguments.) + """ + nodelist = graph.flatten() + entrymap = graph.mkentrymap() + victims = True + while victims: + victims = False + victimlist = [] + entrymap = graph.mkentrymap() + for node in graph.flatten(): + if node in victimlist: + continue + if isinstance(node, BasicBlock) and len(node.operations) == 0: + prevnodes = entrymap[node] + if len(prevnodes) != 1: + continue + prevbranch = prevnodes[0] + nextbranch = node.branch + if not isinstance(prevbranch, Branch) or isinstance(nextbranch, EndBranch): + continue + # + if len(prevbranch.args) > len(nextbranch.args): + prevbranch.args = prevbranch.args[:len(nextbranch.args)] + else: + prevbranch.args.extend(nextbranch.args[len(prevbranch.args):]) + prevbranch.target = nextbranch.target + targetentrylist = entrymap[nextbranch.target] + targetentrylist.remove(nextbranch) + targetentrylist.append(prevbranch) + victimlist.append(node) + victimlist.append(nextbranch) + victims = len(victimlist) > 0 + return graph + Added: pypy/trunk/src/pypy/translator/test/test_simplify.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_simplify.py Wed Oct 1 21:11:47 2003 @@ -0,0 +1,121 @@ +import autopath +from pypy.tool import test +from pypy.tool.udir import udir +from pypy.translator.genpyrex import GenPyrex +from pypy.translator.flowmodel import * +from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.translator.simplify import eliminate_empty_blocks + +make_dot = 1 + +if make_dot: + from pypy.translator.test.make_dot import make_dot +else: + def make_dot(*args): pass + +class SimplifyTestCase(test.IntTestCase): + def setUp(self): + self.space = test.objspace('flow') + + def make_graph(self, func): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + name = func.func_name + funcgraph = self.space.build_flow(func) + funcgraph.source = inspect.getsource(func) + result = GenPyrex(funcgraph).emitcode() + return funcgraph + + def xxxmake_cfunc(self, func): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + name = func.func_name + funcgraph = self.space.build_flow(func) + funcgraph.source = inspect.getsource(func) + result = GenPyrex(funcgraph).emitcode() + make_dot(funcgraph, udir, 'ps') + mod = make_module_from_pyxstring(name, udir, result) + return getattr(mod, name) + + def make_cfunc_from_graph (self, graph): + name = graph.functionname + result = GenPyrex(graph).emitcode() + make_dot(graph, udir, 'ps') + mod = make_module_from_pyxstring(name, udir, result) + return getattr(mod, name) + + #____________________________________________________ + def simple_while(i): + j = 0 + while j < i: + j = j + 1 + return j + + def test_simple_func_identical_results(self): + graph = self.make_graph(self.simple_while) + f0 = self.make_cfunc_from_graph(graph) + newgraph = eliminate_empty_blocks(graph) + newgraph.functionname = 'simple_while_optimized' + f1 = self.make_cfunc_from_graph(newgraph) + self.assertEquals(f0(3), f1(3)) + self.assertEquals(f1(3), self.simple_while.im_func(3)) + +class TestFlowModelSimplification(test.IntTestCase): + def test_eliminate_empty_block_simple(self): + result = Variable("result") + endbranch = EndBranch(result) + op = SpaceOperation('',[],[]) + block2 = BasicBlock([result], [result], [op], endbranch) + branch2 = Branch([result], block2) + block1 = BasicBlock([result], [result], [], branch2) + branch1 = Branch([result], block1) + startblock = BasicBlock([result], [result], [], branch1) + fun = FunctionGraph(startblock, "f") + + eliminate_empty_blocks(fun) + nodelist = fun.flatten() + + self.assert_(startblock in nodelist) + self.assert_(block1 not in nodelist) + + def test_eliminate_empty_block_renaming(self): + result = Variable("result") + x = Variable("x") + y = Variable("y") + zero = Constant(0) + endbranch = EndBranch(result) + op = SpaceOperation('',[],[]) + + block2 = BasicBlock([result], [], [op], endbranch) + + branch2 = Branch([y,zero], block2) + + block1 = BasicBlock([x], [], [], branch2) + + branch1 = Branch([x], block1) + + startblock = BasicBlock([x], [], [], branch1) + fun = FunctionGraph(startblock, "f") + make_dot(fun, udir, 'ps') + eliminate_empty_blocks(fun) + fun.functionname = 'f_optimized' + make_dot(fun, udir, 'ps') + nodelist = fun.flatten() + + self.assert_(startblock in nodelist) + self.assert_(block1 not in nodelist) + self.assert_(block1 not in nodelist) + self.assertEquals(startblock.branch.args[0], x) + self.assertEquals(startblock.branch.args[1], zero) + + +if __name__ == '__main__': + test.main() From hpk at codespeak.net Wed Oct 1 21:16:24 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 21:16:24 +0200 (MEST) Subject: [pypy-svn] rev 1513 - pypy/trunk/src/pypy/translator Message-ID: <20031001191624.B8B125A486@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 21:16:24 2003 New Revision: 1513 Modified: pypy/trunk/src/pypy/translator/annotation.py Log: added future import for python2.2 Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Wed Oct 1 21:16:24 2003 @@ -1,3 +1,5 @@ +from __future__ import generators + from pypy.translator.flowmodel import * class GraphGlobalVariable(Variable): From hpk at codespeak.net Wed Oct 1 21:26:19 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 21:26:19 +0200 (MEST) Subject: [pypy-svn] rev 1514 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001192619.2EAA75A486@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 21:26:18 2003 New Revision: 1514 Modified: pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: removed (pre?!) mature optimization Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Wed Oct 1 21:26:18 2003 @@ -26,11 +26,8 @@ victims = True while victims: victims = False - victimlist = [] entrymap = graph.mkentrymap() for node in graph.flatten(): - if node in victimlist: - continue if isinstance(node, BasicBlock) and len(node.operations) == 0: prevnodes = entrymap[node] if len(prevnodes) != 1: @@ -39,17 +36,14 @@ nextbranch = node.branch if not isinstance(prevbranch, Branch) or isinstance(nextbranch, EndBranch): continue - # + # renaming ... (figure it out yourself :-) if len(prevbranch.args) > len(nextbranch.args): prevbranch.args = prevbranch.args[:len(nextbranch.args)] else: prevbranch.args.extend(nextbranch.args[len(prevbranch.args):]) prevbranch.target = nextbranch.target - targetentrylist = entrymap[nextbranch.target] - targetentrylist.remove(nextbranch) - targetentrylist.append(prevbranch) - victimlist.append(node) - victimlist.append(nextbranch) - victims = len(victimlist) > 0 + print "eliminated", node, nextbranch + victims = True + break return graph Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Wed Oct 1 21:26:18 2003 @@ -26,6 +26,8 @@ pass name = func.func_name funcgraph = self.space.build_flow(func) + from pypy.translator.simplify import eliminate_empty_blocks + #eliminate_empty_blocks(funcgraph) funcgraph.source = inspect.getsource(func) result = GenPyrex(funcgraph).emitcode() make_dot(funcgraph, udir, 'ps') From hpk at codespeak.net Wed Oct 1 22:12:18 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 1 Oct 2003 22:12:18 +0200 (MEST) Subject: [pypy-svn] rev 1515 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031001201218.B5ABA5A486@thoth.codespeak.net> Author: hpk Date: Wed Oct 1 22:12:17 2003 New Revision: 1515 Modified: pypy/trunk/src/pypy/translator/flowmodel.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: - remove empty blocks before EndBranches - remove identity assignments while generating pyrex-code Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Wed Oct 1 22:12:17 2003 @@ -31,6 +31,10 @@ def getedges(self): return [self.branch] + def replace_branch(self, one, another): + assert self.branch is one + self.branch = another + def closeblock(self, branch): self.operations = tuple(self.operations) # should no longer change self.branch = branch @@ -97,6 +101,15 @@ self.ifbranch = ifbranch self.elsebranch = elsebranch + def replace_branch(self, one, another): + assert self.ifbranch is not self.elsebranch, "please enhance flowobjspace" + if one is self.ifbranch: + self.ifbranch = another + elif one is self.elsebranch: + self.elsebranch = another + else: + raise ValueError, "Don't have this branch %r" % one + class EndBranch(FlowNode): def __init__(self, returnvalue): self.returnvalue = returnvalue Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Wed Oct 1 22:12:17 2003 @@ -156,8 +156,14 @@ sourceargs = [_str(arg, prevblock) for arg in branch.args] targetargs = [_str(arg, branch.target) for arg in block.input_args] assert(len(sourceargs) == len(targetargs)) - if sourceargs and sourceargs != targetargs: - self.putline("%s = %s" % (", ".join(targetargs), ", ".join(sourceargs))) + # get rid of identity-assignments + sargs, targs = [], [] + for s,t in zip(sourceargs, targetargs): + if s != t: + sargs.append(s) + targs.append(t) + if sargs: + self.putline("%s = %s" % (", ".join(targs), ", ".join(sargs))) self.gen_BasicBlock(block) Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Wed Oct 1 22:12:17 2003 @@ -7,6 +7,9 @@ from pypy.interpreter.baseobjspace import ObjSpace from pypy.translator.flowmodel import * +# debug +from pypy.translator.genpyrex import GenPyrex + def eliminate_empty_blocks(graph): """simplify_vars() @@ -34,15 +37,24 @@ continue prevbranch = prevnodes[0] nextbranch = node.branch - if not isinstance(prevbranch, Branch) or isinstance(nextbranch, EndBranch): + if not isinstance(prevbranch, Branch): continue - # renaming ... (figure it out yourself :-) - if len(prevbranch.args) > len(nextbranch.args): - prevbranch.args = prevbranch.args[:len(nextbranch.args)] + if isinstance(nextbranch, EndBranch): + var = nextbranch.returnvalue + prevprevnode = entrymap[prevbranch] + assert len(prevprevnode) == 1 + if var in node.input_args: + i = node.input_args.index(var) + nextbranch.returnvalue = prevbranch.args[i] + prevprevnode[0].replace_branch(prevbranch, nextbranch) else: - prevbranch.args.extend(nextbranch.args[len(prevbranch.args):]) - prevbranch.target = nextbranch.target - print "eliminated", node, nextbranch + # renaming ... (figure it out yourself :-) + if len(prevbranch.args) > len(nextbranch.args): + prevbranch.args = prevbranch.args[:len(nextbranch.args)] + else: + prevbranch.args.extend(nextbranch.args[len(prevbranch.args):]) + prevbranch.target = nextbranch.target + #print "eliminated", node, nextbranch victims = True break return graph Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Wed Oct 1 22:12:17 2003 @@ -27,7 +27,7 @@ name = func.func_name funcgraph = self.space.build_flow(func) from pypy.translator.simplify import eliminate_empty_blocks - #eliminate_empty_blocks(funcgraph) + eliminate_empty_blocks(funcgraph) funcgraph.source = inspect.getsource(func) result = GenPyrex(funcgraph).emitcode() make_dot(funcgraph, udir, 'ps') From tismer at codespeak.net Thu Oct 2 10:20:40 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 2 Oct 2003 10:20:40 +0200 (MEST) Subject: [pypy-svn] rev 1516 - pypy/trunk/doc/funding/makedoc Message-ID: <20031002082040.C12CE5C3F7@thoth.codespeak.net> Author: tismer Date: Thu Oct 2 10:20:39 2003 New Revision: 1516 Added: pypy/trunk/doc/funding/makedoc/makedoc.py (props changed) - copied unchanged from rev 1510, pypy/trunk/doc/funding/makedoc/mkdoclist.py Log: renamed, since it now actually makes the whole doc. From tismer at codespeak.net Thu Oct 2 10:25:07 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 2 Oct 2003 10:25:07 +0200 (MEST) Subject: [pypy-svn] rev 1517 - pypy/trunk/doc/funding/makedoc Message-ID: <20031002082507.474415C3F7@thoth.codespeak.net> Author: tismer Date: Thu Oct 2 10:25:05 2003 New Revision: 1517 Removed: pypy/trunk/doc/funding/makedoc/mkdoclist.py Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: solved numbering probs, looks quite good already Deleted: /pypy/trunk/doc/funding/makedoc/mkdoclist.py ============================================================================== --- /pypy/trunk/doc/funding/makedoc/mkdoclist.py Thu Oct 2 10:25:05 2003 +++ (empty file) @@ -1,146 +0,0 @@ -import os, sys, re - -tempfiles = [] -class tempfile(file): - def __init__(self, name, *args, **kw): - tempfiles.append(name) - file.__init__(self, name, *args, **kw) - -def get_file_list(): - flis = os.listdir("..") - pat = "[bB][0-9].[0-9]" - lis = [] - for name in flis: - if re.match(pat, name): - pre, post = os.path.splitext(name) - if post.lower() == ".txt": - lis.append(pre) - lis.sort() - return lis - -HEAD1 = [ - ":DELETE:BEGIN", - "", - "fake toplevel", - ".............", - "", - ":DELETE:END", - "", - ] - -HEAD2 = [ - ":DELETE:BEGIN", - "", - "fake toplevel", - ".............", - "fake sublevel", - "'''''''''''''", - "", - ":DELETE:END", - "", - ] - - -def mangle_wp_file(txt, name): - lines = txt.split("\n") - for line in lines: - if line.startswith(".. |wp|"): - break - else: - # no WP file - pat = "[bB][0-9].0" - if re.match(pat, name): - head = HEAD1 - else: - head = HEAD2 - lines[:0] = head - txt = "\n".join(lines) - return txt - #.. |wp| replace:: WP21 - wp = line.split()[-1] - # make a local target - lines[:0] =[ - ":DELETE:BEGIN", - "", - "fake toplevel", - ".............", - "fake sublevel", - "'''''''''''''", - "", - "This is the anchor %s_" % wp, - "", - ":DELETE:END", - "", - ".. _%s:" % wp.lower(), - "", - ] - # merge the crossref file in, with modifications - for line in lines: - if line.startswith(".. include:: crossreferences.asc"): - break - inset = [] - matchline = line - for line in file("crossreferences.asc"): - parts = line.split() - if len(parts)>=2 and parts[1] == "_%s:" % wp: - continue - inset.append(line.rstrip()) - p = lines.index(matchline) - lines[p:p+1] = inset - txt = "\n".join(lines) - return txt - -def make_new_files(names): - for name in names: - txt = file(os.path.join("..", name+".txt")).read() - txt = mangle_wp_file(txt, name) - tempfile(name+".txt", "w").write(txt) - -def make_doc_list(names): - f = tempfile("doclist.asc", "w") - for name in names: - print>>f, "%s.html" % name - -def build_xref_file(): - lines = file("../crossreferences.asc").readlines() - for i in range(len(lines)): - parts = lines[i].split() - if len(parts) >= 2: - if parts[0] == ".." and parts[1].startswith("_") and parts[1].endswith(":"): - txt = parts[1][1:-1] - lines[i] = "%s %s %s\n" % (parts[0], parts[1], "#"+txt.lower()) - tempfile("crossreferences.asc", "w").writelines(lines) - -def copy_ascfiles(): - for name in os.listdir(".."): - if name.startswith("wp-") and name.endswith(".asc"): - tempfile(name, "w").write(file(os.path.join("..", name)).read()) - -def create_oo_doc(): - from win32com.client import Dispatch - objServiceManager= Dispatch("com.sun.star.ServiceManager") - objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") - objDocument= objDesktop.loadComponentFromURL(r"file:///D|/pypy/trunk/doc/funding/makedoc/prep_part_b.sxw", "_blank", 0, ()) - #wonder = objDesktop.loadComponentFromURL(r"macro://./Standard.test_import.build_doc", "_blank", 0, ()) - prog = r"E:\Programme\OpenOffice.org1.1.0\program\soffice.exe" - args = "macro://./Standard.test_import.build_doc" - os.system(prog+" "+args) - objDocument.close(1) # 1 = give up ownership - -def make_doc(): - build_xref_file() - copy_ascfiles() - names = get_file_list() - make_new_files(names) - make_doc_list(names) - os.system("python d:/python22/docutils/tools/buildhtml.py --no-xml-declaration") - #return - create_oo_doc() - for name in tempfiles: - os.unlink(name) - if name.endswith(".txt"): - os.unlink(os.path.splitext(name)[0]+".html") - os.system("python zipmod.py part_b.sxw") - -if __name__ == "__main__": - make_doc() \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Thu Oct 2 13:05:03 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 2 Oct 2003 13:05:03 +0200 (MEST) Subject: [pypy-svn] rev 1518 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031002110503.4DDAB5C41C@thoth.codespeak.net> Author: tismer Date: Thu Oct 2 13:05:01 2003 New Revision: 1518 Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: new version, rather good with numbering. Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Thu Oct 2 13:05:01 2003 @@ -336,10 +336,10 @@ dependent from the available capabilities of the current code generator. -Load Balancing in a Multi-Processor environment ---------------------------------------------------- +WP56_: Load Balancing in a Multi-Processor environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*XXX to be finished, collecting snippets* +*XXX add some general words here from the wp* Infrastructure Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Thu Oct 2 13:05:01 2003 @@ -23,6 +23,7 @@ "", "fake toplevel", ".............", + "empty", "", ":DELETE:END", "", @@ -33,13 +34,57 @@ "", "fake toplevel", ".............", + "empty", + "", "fake sublevel", "'''''''''''''", + "empty", "", ":DELETE:END", "", ] +HEAD3 = [ + ":DELETE:BEGIN", + "", + "fake toplevel", + ".............", + "empty", + "", + "fake sublevel", + ";;;;;;;;;;;;;", + "empty", + "", + "fake sublevel2", + "''''''''''''''''", + "empty", + "", + ":DELETE:END", + "", + ] + +HEAD4 = [ + ":DELETE:BEGIN", + "", + "fake toplevel", + ".............", + "empty", + "", + "fake sublevel", + ";;;;;;;;;;;;;", + "empty", + "", + "fake sublevel2", + "''''''''''''''''", + "empty", + "", + "fake sublevel3", + "+++++++++++++++", + "empty", + "", + ":DELETE:END", + "", + ] def mangle_wp_file(txt, name): lines = txt.split("\n") @@ -48,7 +93,7 @@ break else: # no WP file - pat = "[bB][0-9].0" + pat = "[bB][0-9]\.0" if re.match(pat, name): head = HEAD1 else: @@ -58,22 +103,25 @@ return txt #.. |wp| replace:: WP21 wp = line.split()[-1] + + pat = "[bB]6\.7.wp[0-9]0" + if re.match(pat, name): + head = HEAD3 + else: + head = HEAD4 + # make a local target - lines[:0] =[ + lines[:0] = head + [ ":DELETE:BEGIN", "", - "fake toplevel", - ".............", - "fake sublevel", - "'''''''''''''", - "", "This is the anchor %s_" % wp, "", ":DELETE:END", "", - ".. _%s:" % wp.lower(), + ".. _%s:" % wp, # wp.lower(), "", ] + # merge the crossref file in, with modifications for line in lines: if line.startswith(".. include:: crossreferences.asc"): Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From stephan at codespeak.net Thu Oct 2 14:11:27 2003 From: stephan at codespeak.net (stephan at codespeak.net) Date: Thu, 2 Oct 2003 14:11:27 +0200 (MEST) Subject: [pypy-svn] rev 1519 - pypy/trunk/doc/funding Message-ID: <20031002121127.9D6485C41C@thoth.codespeak.net> Author: stephan Date: Thu Oct 2 14:11:26 2003 New Revision: 1519 Added: pypy/trunk/doc/funding/jit-history.pdf (contents, props changed) Log: jit-history.pdf added Added: pypy/trunk/doc/funding/jit-history.pdf ============================================================================== Binary file. No diff available. From tismer at codespeak.net Thu Oct 2 16:30:34 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 2 Oct 2003 16:30:34 +0200 (MEST) Subject: [pypy-svn] rev 1520 - pypy/trunk/doc/funding/makedoc Message-ID: <20031002143034.99C8C5C41C@thoth.codespeak.net> Author: tismer Date: Thu Oct 2 16:30:32 2003 New Revision: 1520 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: current view Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From nico at codespeak.net Thu Oct 2 18:58:14 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Thu, 2 Oct 2003 18:58:14 +0200 (MEST) Subject: [pypy-svn] rev 1522 - pypy/trunk/doc/funding Message-ID: <20031002165814.AB76B5C41C@thoth.codespeak.net> Author: nico Date: Thu Oct 2 18:58:13 2003 New Revision: 1522 Added: pypy/trunk/doc/funding/project_planning.xml pypy/trunk/doc/funding/project_resources.xml pypy/trunk/doc/funding/pyganttrc Log: initial project description. use with http://www.logilab.org/projects/pygantt to produce gantt charts to include in final document. Added: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/project_planning.xml Thu Oct 2 18:58:13 2003 @@ -0,0 +1,144 @@ + + + + + + + + + + +720 +2004/01/01 + + + + + +720 +2004/01/01 + + + + +720 +2004/01/01 + + + + + + + + + + +120 +2004/01/01 + + + + + + + +60 +wp21a + + + + + + + + + + + +120 +2004/01/01 + + + + + + +240 +wp22a + + + + + + + + + + +120 +2004/01/01 + + + + + + +120 +wp21a +wp22a +wp31 + + + + + + +90 +2004/01/01 + + + + + + +1 +wp2 +wp3 + + + + + + + +120 +synthese1 + + + + + + +120 +synthese1 + + + + + + +120 +synthese1 + + + + + + +120 +synthese1 + + + + + Added: pypy/trunk/doc/funding/project_resources.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/project_resources.xml Thu Oct 2 18:58:13 2003 @@ -0,0 +1,9 @@ + + + + + + +hacker + + \ No newline at end of file Added: pypy/trunk/doc/funding/pyganttrc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/pyganttrc Thu Oct 2 18:58:13 2003 @@ -0,0 +1,26 @@ +# generic +HEAD = white +CONSTRAINT = black + +# task's color according to its status +TASK_TODO = orange +TASK_READY = orange +TASK_RUN = darkblue +TASK_DONE = darkgray +TASK_PROBLEM = red + +# for odd row +ODD_TITLE = white +ODD_FIELD = white +ODD_WEEKDAY = white +ODD_WEEKEND = wheat +ODD_RESOURCE_USED = darkorange +ODD_RESOURCE_UNAVAILABLE = wheat +# for even row +EVEN_TITLE = wheat +EVEN_FIELD = wheat +EVEN_WEEKDAY = wheat +EVEN_WEEKEND = wheat +EVEN_RESOURCE_USED = darkorange +EVEN_RESOURCE_UNAVAILABLE = wheat + From hpk at codespeak.net Thu Oct 2 18:58:59 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 2 Oct 2003 18:58:59 +0200 (MEST) Subject: [pypy-svn] rev 1523 - pypy/trunk/doc/funding/fundingattic Message-ID: <20031002165859.7B6955C41C@thoth.codespeak.net> Author: hpk Date: Thu Oct 2 18:58:58 2003 New Revision: 1523 Added: pypy/trunk/doc/funding/fundingattic/ Log: move currrently not needed stuff in here From hpk at codespeak.net Thu Oct 2 19:36:03 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 2 Oct 2003 19:36:03 +0200 (MEST) Subject: [pypy-svn] rev 1524 - in pypy/trunk/doc/funding: . fundingattic Message-ID: <20031002173603.231AC5C41C@thoth.codespeak.net> Author: hpk Date: Thu Oct 2 19:35:59 2003 New Revision: 1524 Added: pypy/trunk/doc/funding/fundingattic/B6.7.wp51_embedded_device.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp51_embedded_device.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp52_small_os_pre.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp52_small_os_pre.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp53_small_os.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp53_small_os.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp54_simd_architecture.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp54_simd_architecture.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp55_numerical_package.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp55_numerical_package.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp56_load_balancing.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt Removed: pypy/trunk/doc/funding/B6.7.wp51_embedded_device.txt pypy/trunk/doc/funding/B6.7.wp52_small_os_pre.txt pypy/trunk/doc/funding/B6.7.wp53_small_os.txt pypy/trunk/doc/funding/B6.7.wp54_simd_architecture.txt pypy/trunk/doc/funding/B6.7.wp55_numerical_package.txt pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt Modified: pypy/trunk/doc/funding/B6.7.wp50_validations.txt Log: - created validation workpackages with three tasks - moved some stuff to fundingattic Modified: pypy/trunk/doc/funding/B6.7.wp50_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp50_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp50_validations.txt Thu Oct 2 19:35:59 2003 @@ -22,27 +22,51 @@ **Objectives** -Validation of the PyPy concept by proving its applicability -in real applications. +Research and validate the flexibility of PyPy by building key middleware +features into the language itself. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -This working package consists of the tasks WP51_ WP52_ WP53_ WP54_ WP55_ WP56_ -or a subset thereof, dependent of feasibility. +**Task 1** + +Analyze and implement security models at the language level. Implement +the "RExec" restricted execution model. (It was removed from the official +Python implementation because it was too hard to maintain.) + +**Task 2** + +Analyze and implement distributed execution models at the language level. +Implement network-transparent execution of Python programs. (Typical +libraries require programs to be aware of the remote execution model.) + +**Task 3** + +Analyze and implement persistence at the language level. Implement an +orthogonally persistent object space for Python programs. (Persistence +is never fully orthogonal without advanced language support.) .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +- D?? A PyPy version which supports secure restricted execution of + arbitrary Python programs + +- D?? A PyPy version which supports distributed execution of + arbitrary Python programs + +- D?? A PyPy version which supports persistent execution of + arbitrary Python programs + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- M6 M7 M8 M9 +- M4 Validation of the flexibility of PyPy with respect to key middleware requirements .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp51_embedded_device.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp51_embedded_device.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,68 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Porting PyPy to an Embedded Device -.. |wp| replace:: WP51 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Y -.. |m3| replace:: 3 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Supporting a completely different platform -- Providing an efficient, high-level Language for - embedded Devices -- Proving the flexibility of the PyPy idea - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Analyse the differences between the new architecture and - PyPy's current. Deside whether to optimize for code size - or applicatin speed. - -- Develop the translation process, run-time and those optimisations - that depend on low-level details. - -- Implement a simulator for the embedded device. - -- Implement interfaces to the needed external libraries. - -- Combine different solutions for the different issues discussed in - High-performance (WP42_, WP43_, WP44_). - Gather statistics with real-work Python applications. - Compare the results. This is where the flexibility of the whole - project is vital. Typically, very different trade-offs need to be - made on different environments. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Python running on the embedded device. -- DL??? Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M5 - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp52_small_os_pre.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp52_small_os_pre.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,54 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Evaluation whether to do a small OS in PyPy -.. |wp| replace:: WP52 -.. |start| replace:: M5 -.. |p1| replace:: CT -.. |m1| replace:: 1 -.. |p2| replace:: Y -.. |m2| replace:: 1 -.. |p3| replace:: Y -.. |m3| replace:: 1 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Deciding whether to build a small Operating System - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Analyse the existing device drivers for the embedded device. - Figure out which drivers should be interfaced to, which - parts of the BIOS must be interfaced, and what has to be - recoded in Python. At least all drivers which have - blocking calls must be recoded in in Python. - -- Check whether we need to implement a TCP/IP stack and if this - work is doable in reasonable time. If not, then cancel the - next WP in favor of another validation WP to be done instead. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M6 - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp53_small_os.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp53_small_os.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,64 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: A small Operating System for an Embedded Device -.. |wp| replace:: WP53 -.. |start| replace:: M6 -.. |p1| replace:: CT -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Y -.. |m3| replace:: 3 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Building all parts of a small Operating System - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Recode device drivers in Python, according to the results of WP52_. - Design tests which ensure functional compatibility with the original - ones, as far as these exist. - -- Extend the simulator of WP51_ accordingly. - -- Implement the OS kernel as a set of prioritized tasklets - (using the support from WP41_) - -- Implement a simple file system which is accessible by - Python, only. - -- Implement a few basic protocols like FTP in order to provide - basic access to the internal data of the embedded device. - -- Test the implementation both on the simulator and on the real hardware. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Python implements the whole OS of the embedded device. -- DL??? Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M7 - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp54_simd_architecture.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp54_simd_architecture.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,69 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Code Generator for SIMD Architecture -.. |wp| replace:: WP54 -.. |start| replace:: M4 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Z -.. |m3| replace:: 3 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Extending PyPy towards general support of Single Instruction Multiple -Data (SIMD) architectures. -Building a concrete implementation for one choosen SIMD architecture. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Select a processor architecture which has SIMD extensions, - like SSE2 or AltiVec. - Preference should be given to a technology that we are - supporting, already. - -- Examine the necessary design changes/extensions to PyPy for supporting - parallel instructions. - -- Extend the code generator to support - and optimize for the new instructions. - This involves re-iterations of parts of WP32_ and WP43_. - Extending Psyco involves WP44_ as well. - -- Extend PyPy by an uto-probing feature that tries to - examine the availability of certain extensions at runtime. - -- Design and implement the necessary vectorised data types - for Python/RPython. The extra types should be made sufficient to - enable us to write parallel extension modules, and to - write the new testing programs. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- Parallel extension for PyPy - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- Extended optimisation towards parallel numerics. - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp55_numerical_package.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp55_numerical_package.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,61 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Enhanced Numerical Package -.. |wp| replace:: WP55 -.. |start| replace:: WP54 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building an enhanced numerical package on top of the SIMD extensions of PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Decide which numerical extension package to re-implement in PyPy. - -- Re-implement the numeric package in terms of applying the - new vectorized operations. - -- Make sure that the new implementation passes all tests. - -- Provide backward-compatibility of the package in a way that - allows it to fall back to a simpler architecture when there - is no SIMD extension available. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- Enhanced numerical package - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M8 - -- We expect to at least reach the efficiency of the existing numerical - packages. The target is to outperform these and to get a peformance that - is comparable to the efficiency of optimised parallel C libraries. - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp56_load_balancing.txt Thu Oct 2 19:35:59 2003 +++ (empty file) @@ -1,57 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Load Balancing in a Multi-Processor environment -.. |wp| replace:: WP56 -.. |start| replace:: M3, M4 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Z -.. |m3| replace:: 3 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Implement load balancing for distributed applications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Provide decentralized network architecture for routing and processing computational tasks -- Investigate use of statistical network information for load balancing -- Compare with information obtained by probing the network -- Distribute workload accordingly to available resources -- Implement distribution on different levels (tasks, entire object spaces) -- Make network nodes attachable and detachable at runtime -- Reassign unfinished tasks to other nodes -- Study effects of different routing topologies -- Investigate restrictions on network nodes for untrusted code - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- Network service running on a variatey of nodes -- PyPy runtime distributing workload on the network - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M9 - -.. include:: wp-tableend.asc From nico at codespeak.net Thu Oct 2 19:46:27 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Thu, 2 Oct 2003 19:46:27 +0200 (MEST) Subject: [pypy-svn] rev 1525 - pypy/trunk/doc/funding Message-ID: <20031002174627.BF1025C41C@thoth.codespeak.net> Author: nico Date: Thu Oct 2 19:46:26 2003 New Revision: 1525 Added: pypy/trunk/doc/funding/20031002-meeting-notes.txt Log: 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. 2003-10-02 meeting notes. Added: pypy/trunk/doc/funding/20031002-meeting-notes.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/20031002-meeting-notes.txt Thu Oct 2 19:46:26 2003 @@ -0,0 +1,44 @@ +Consortium +---------- + +DFKI Germany Alastair Burt +AB Strakt Sweden Jacob Hallen +U Southampton UK Armin Rigo +PBF Europe Laura Creighton ? +Logilab France Nicolas Chauvat + +Infrae(?) Dutch Holger Kregel + +interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, +anna ravenscroft, gunter janton, samuele pedroni + + +Actions +------- + +* check PBF can host free lancers (alastair knows names) + +* check centera is big enough (chances are low) + +* check infrae is willing to commit + +* write new WP about python logic. + + --> 18 man.months for DFKI ? + +* DFKI is cordinator, who is the manager? + + +Missing for EU Proposal +----------------------- + +* consortium organisation + +* complete WP description + +* fully written proposal + +* cost estimates for sprints + +* evaludation methods and deliverables + From tismer at codespeak.net Thu Oct 2 19:56:34 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 2 Oct 2003 19:56:34 +0200 (MEST) Subject: [pypy-svn] rev 1526 - pypy/trunk/doc/funding Message-ID: <20031002175634.D81495C41C@thoth.codespeak.net> Author: tismer Date: Thu Oct 2 19:56:34 2003 New Revision: 1526 Added: pypy/trunk/doc/funding/B0.1_summary.txt Log: split part, since it goes after the TOC Added: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B0.1_summary.txt Thu Oct 2 19:56:34 2003 @@ -0,0 +1,76 @@ +:DELETE:BEGIN + +Proposal Summary Page +======================= + +-- we create this header in the document, so it doesn't appear here. + +:DELETE:END + +**Proposal full title:** + + The full title of the Proposal is 'Pypy: A flexible, modular, + self-hosting, next-generation specialising compiler for the + Open Source Programming Language Python'. + +**Proposal acronym:** + + The proposal acronym is PYPY. + +**Strategic Objectives:** + + This proposal directly addresses the Strategic Objective + IST-2002-2.3.2.3 - 'Open development platforms for software and + services' of the Second Call of the Information Society + Technologies Workprogramme. Since this is foundational applied + research, focusing on fundamental design concepts, it will have + significant indirect effects wherever the Python programming + langauge is taught or deployed. It will reduce the current wide + gap between academic computer science and industrial programming + tools, thus contributing to European competitiveness and prosperity, + and enhancing openness and security in the public and private + sector. + +**Proposal abstract:** + +:DELETE:BEGIN + +copied from Part A + +(Actually, we will paste this one INTO Part A) + +:DELETE:END + +The PyPy project will build a flexible, modular, context-aware +implementation of the Open Source programming language Python written +in itself. Python is already a very popular Object-Oriented +Very-High-Level interpreted programming language. + +(FN -- Usage statistics indicate that Python ranks sixth in usage +world-wide, after Java, Visual Basic, C, C++, and Perl) + +But the current state-of-the-Art, both in Python and in Computer +Languages in general does not best serve the new needs of the creators +of embedded, networked and distributed software sectors. They have +long needed a language which was more flexible, easier to reduce to +its 'bare-bones' for embedding, and which could dynamically +reconfigure itself and balance loads at the interpreter level. +Consequently, the PyPy project is a collaboration between academic +researchers, who have the skill and vision to produce a new runtime +language architecture for the twenty-first century, SME software and +service providers, who wish to deploy PyPy in their innovative new +business ventures, and older established industrial users who would +like to embed a PyPy application on their ubiquitous products, such as +home entertainment systems or commercial computer printers. + +The project will go through four phases. In the first phase, we will +build a complete PyPy Interpreter. In the second phase, we will build +a complete PyPy compiler that compiles itself. While our new +architecture of Object Spaces can here be considered innovative, this +two phases can be looked at as a way to only produce a state-of-the-Art +implementation of the Python programming language. We will go beyond +this in Phase three, and produce a High-Performance PyPy, which goes +beyond the State of the Art and particularily addresses our modern +needs. Finally in Phase four, we will Validate our design choices +by .... + From nico at codespeak.net Thu Oct 2 20:15:20 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Thu, 2 Oct 2003 20:15:20 +0200 (MEST) Subject: [pypy-svn] rev 1527 - pypy/trunk/doc/funding Message-ID: <20031002181520.1DB315C41C@thoth.codespeak.net> Author: nico Date: Thu Oct 2 20:15:19 2003 New Revision: 1527 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: updating after laura and nicolas proof-reading Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Thu Oct 2 20:15:19 2003 @@ -22,7 +22,9 @@ This proposal directly addresses the Strategic Objective IST-2002-2.3.2.3 - 'Open development platforms for software and services' of the Second Call of the Information Society - Technologies Workprogramme. Since this is foundational applied + Technologies Workprogramme. + + Since this is foundational applied research, focusing on fundamental design concepts, it will have significant indirect effects wherever the Python programming langauge is taught or deployed. It will reduce the current wide @@ -44,33 +46,31 @@ The PyPy project will build a flexible, modular, context-aware implementation of the Open Source programming language Python written in itself. Python is already a very popular Object-Oriented -Very-High-Level interpreted programming language. - -(FN -- Usage statistics indicate that Python ranks sixth in usage -world-wide, after Java, Visual Basic, C, C++, and Perl) +Very-High-Level interpreted and agile programming language. +Python ranks sixth in world-wide usage, after Java, Visual Basic, C, +C++ and Perl and has an estimated user community of tens of thousands +European members. -But the current state-of-the-Art, both in Python and in Computer +The current State of the Art, both in Python and in Computer Languages in general does not best serve the new needs of the creators of embedded, networked and distributed software sectors. They have long needed a language which was more flexible, easier to reduce to its 'bare-bones' for embedding, and which could dynamically -reconfigure itself and balance loads at the interpreter level. +reconfigure itself and optimise execution speed at the interpreter level. Consequently, the PyPy project is a collaboration between academic -researchers, who have the skill and vision to produce a new runtime -language architecture for the twenty-first century, SME software and -service providers, who wish to deploy PyPy in their innovative new -business ventures, and older established industrial users who would -like to embed a PyPy application on their ubiquitous products, such as -home entertainment systems or commercial computer printers. - -The project will go through four phases. In the first phase, we will -build a complete PyPy Interpreter. In the second phase, we will build -a complete PyPy compiler that compiles itself. While our new -architecture of Object Spaces can here be considered innovative, this -two phases can be looked at as a way to only produce a state-of-the-Art -implementation of the Python programming language. We will go beyond -this in Phase three, and produce a High-Performance PyPy, which goes -beyond the State of the Art and particularily addresses our modern -needs. Finally in Phase four, we will Validate our design choices -by .... +researchers and SME software and service providers. The formers have the +skill and vision to produce a new runtime language architecture for the +twenty-first century and the latter wish to deploy PyPy in their innovative +new business ventures. The results of the PyPy project are expected to +be picked up by established industrial users who will for example +embed a PyPy application on their products, such as +home entertainment systems, commercial computer printers or mobile +devices. + +The project will go through three phases. In the first phase, we will +build a complete and State of the Art PyPy Interpreter. In the second +phase, we will research and innovate to build a high-performance +PyPy that addresses our modern needs. In a final third phase, we will +validate and disseminate the previous results by implementing several +applications using the high-performance PyPy interpreter. From hpk at codespeak.net Thu Oct 2 20:26:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 2 Oct 2003 20:26:50 +0200 (MEST) Subject: [pypy-svn] rev 1528 - in pypy/trunk/doc/funding: . fundingattic Message-ID: <20031002182650.99CBF5C41C@thoth.codespeak.net> Author: hpk Date: Thu Oct 2 20:26:49 2003 New Revision: 1528 Added: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization (contents, props changed) - copied, changed from rev 1525, pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt pypy/trunk/doc/funding/fundingattic/B6.7.wp40_high_performance.txt (props changed) - copied unchanged from rev 1523, pypy/trunk/doc/funding/B6.7.wp40_high_performance.txt Removed: pypy/trunk/doc/funding/B6.7.wp40_high_performance.txt pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt Log: revised the Psyco workpackage to be "dynamic optimization" Deleted: /pypy/trunk/doc/funding/B6.7.wp40_high_performance.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp40_high_performance.txt Thu Oct 2 20:26:49 2003 +++ (empty file) @@ -1,50 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: High-performance PyPy-Python -.. |wp| replace:: M2 -.. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Optimizing the Bootstrapping in various ways. - -Exploring several Object Implementations. - -Folding Psyco and Stackless into PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -This working package consists of the tasks WP41_ WP42_ WP43_ WP44_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M4 - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization (from rev 1525, pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization Thu Oct 2 20:26:49 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -.. |title| replace:: Integration of Psyco +.. |title| replace:: Dynamic optimizations and features .. |wp| replace:: WP44 .. |start| replace:: M2 .. |p1| replace:: AR @@ -22,43 +22,43 @@ **Objectives** -- Integration of Psyco's technology into PyPy. - - - Optimization by Creating Specialized Machine Code at Run-time. - - Adressing new Processor Architectures +Enhance PyPy to dynamically adapt to its run-time environment and +to the characteristics of the running program. Dramatically +increase speed by enabling Just-In-Time compilation and +specialization. Address multiple processor architectures. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -- Determine which parts of Psyco need to be written in RPython. +**Task 1** + +Apply and enhance techniques from the Psyco project. Promote parts +of the static translator to be used for run-time specialization. + +**Task 2** -- Design Psyco as a meta-component - that hooks into the translator (WP31_) +Design and implement a back-end component for dynamically emitting +machine code for multiple processor architectures. Enable dynamic +foreign function calls. -- Implement Psyco partially in RPython, partially in Python, - favoring the latter. - -- Implement a dedicated run-time component (WP33_) for Psyco. - -- Further develop these technologies based on the results gathered in WP43_, - e.g. identify when these technologies would guide specific choices among the - solutions developed in WP33_ and studying several solutions in WP42_. +**Task 3** + +Research optimisation heuristics for the Just-In-Time compiler. +Coordinate with WP42_. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- DL??? to be defined. Speed boost, architectures. -- DL??? Passing all applicable elements of the standard test suite. +- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. +- DL??? A Just-In-Time compiler for PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- M4 with M3 WP42_ WP43_ - .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp44_integrate_psyco.txt Thu Oct 2 20:26:49 2003 +++ (empty file) @@ -1,64 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Integration of Psyco -.. |wp| replace:: WP44 -.. |start| replace:: M2 -.. |p1| replace:: AR -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Y -.. |m3| replace:: 2 -.. |p4| replace:: Z -.. |m4| replace:: 2 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Integration of Psyco's technology into PyPy. - - - Optimization by Creating Specialized Machine Code at Run-time. - - Adressing new Processor Architectures - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Determine which parts of Psyco need to be written in RPython. - -- Design Psyco as a meta-component - that hooks into the translator (WP31_) - -- Implement Psyco partially in RPython, partially in Python, - favoring the latter. - -- Implement a dedicated run-time component (WP33_) for Psyco. - -- Further develop these technologies based on the results gathered in WP43_, - e.g. identify when these technologies would guide specific choices among the - solutions developed in WP33_ and studying several solutions in WP42_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? to be defined. Speed boost, architectures. -- DL??? Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M4 with M3 WP42_ WP43_ - -.. include:: wp-tableend.asc From lac at codespeak.net Thu Oct 2 20:31:37 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Thu, 2 Oct 2003 20:31:37 +0200 (MEST) Subject: [pypy-svn] rev 1529 - pypy/trunk/doc/funding Message-ID: <20031002183137.583A75C41C@thoth.codespeak.net> Author: lac Date: Thu Oct 2 20:31:36 2003 New Revision: 1529 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: started editing Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Thu Oct 2 20:31:36 2003 @@ -17,18 +17,25 @@ Potential impact =================== -This project has direct relevance to European competitiveness. Europe -is the acknowledged world leader in handheld, mobile, and embedded -devices. But people working in such industries have long desired a -high level language with a very small footprint. They wish to use -only the language features which they need. But modern languages are -chock full of features designed for the developer to use when -developing software. The new innovative concept of Object Spaces, -pioneered by PyPy makes the construction of tiny Object Spaces, -suitable for running on the smallest devices straight-forward. A -Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. These two reasons -make the Python Business Forum quite excited about PyPy. +Python is ranked the sixth most popular computer language in the +world, used by tens of thousands of European programmers. Thus a new +implementation of the language with substantial improvements will have +an immediate direct effect on Eropean competitiveness. Moreover, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +Python with g +reater speed will seamlessly improve the offerings of +those European Companies who develop using Python. Moreover, a great many companies, in deciding what language to develop in, reject Very High Level Languages, despite their known advantages From nico at codespeak.net Thu Oct 2 20:41:17 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Thu, 2 Oct 2003 20:41:17 +0200 (MEST) Subject: [pypy-svn] rev 1530 - pypy/trunk/doc/funding Message-ID: <20031002184117.D6D6E5C41C@thoth.codespeak.net> Author: nico Date: Thu Oct 2 20:41:16 2003 New Revision: 1530 Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/B1._obj_from_badB2.txt pypy/trunk/doc/funding/B2.0.0_new_relevance.txt pypy/trunk/doc/funding/B4.0_resources.txt pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B5.0_management.txt pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: after proof-reading with Laura Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Thu Oct 2 20:41:16 2003 @@ -80,5 +80,7 @@ Coordinator fax +XXXFIXME finish up list of partners, see 20031002-meeting-notes.txt + .. put this before the TOC Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 2 20:41:16 2003 @@ -20,6 +20,19 @@ :DELETE:END +XXXFIXME: restructure with following plan: + +B.1.1 Problem to be solved + +B.1.2 Quantified specific objective + +B.1.3 Current State of The Art + +B.1.4 Beyond State of The Art + +XXXFIXME: shorten introduction to fit in 3 pages + + Scientific and technological objectives of the project & state of the art =============================================================================== @@ -30,6 +43,7 @@ programming languages whose primary objective is not efficiency. Interpreters are well-suited for small-to-medium languages, favouring a simple and clear engine. XXX aren't there "large" interpreted languages? +XXX what is a large language? example? XXX armin et.al..: isn't the key in the following para that today's language design is "monolithic" and not configurable, i.e. all bigger programming languages are not @@ -38,6 +52,8 @@ are to be developed for an increasing variety of devices and environments (Big-Iron, cars, watches, mobile phones, banks, whatever). What about a security-goal btw? +XXX nico: modularity in langage is a very interesting feature. see below. + As a language becomes popular, however, the costs inherent to this approach are increasingly pointed out. These costs are twofold. Firstly, no matter how much effort is made to optimize the core components, the @@ -84,6 +100,7 @@ * distributed execution (SMP or Networked) * persistency * FIXME list our application-level goals here +* XXX nico: could talk about security, logic programming, aspect-oriented programming, etc. The first major goal of the PyPy project is to produce an interpreter with flexibility in mind, and put this flexibility to good use. More @@ -243,11 +260,11 @@ The Translator -------------- -Finally, if this were still needed, let us further demonstrate the +Finally, let us further demonstrate the benefits of writing an interpreter flexibly in a high-level language. So far, the translator sounds like a magic piece of difficult-to-write -software. This is not so. Analysing pieces of Python source code would -not be a complex task anyway. Some type inference is needed, but it can +software. This is not so for analysing pieces of Python source code is +not a very complex task. Some type inference is needed, but it can be kept simple by suitably restricting the amount of allowed dynamism. However, instead of analysing source code, we propose another approach: Modified: pypy/trunk/doc/funding/B1._obj_from_badB2.txt ============================================================================== --- pypy/trunk/doc/funding/B1._obj_from_badB2.txt (original) +++ pypy/trunk/doc/funding/B1._obj_from_badB2.txt Thu Oct 2 20:41:16 2003 @@ -24,7 +24,7 @@ and value-added user services. This will enable the development of future software engineering methods and tools. -The PyPy project aims to build an flexible and fast implementation of +The PyPy project aims to build a flexible and fast implementation of the Open Source programming language Python written in itself. Python is a Very High Level Language, a modern tool for developing software. While Python is already suitable for developing software of all sizes, @@ -90,7 +90,8 @@ Each member of the group is committed to Agile Methodologies. Some of us have experience with Crystal and others with XP, [FIXME add URLS -and see if we have any more trained people on the team]two of the more +and see if we have any more trained people on the team XXX nico: Logilab +teaches XP] two of the more popular ones. Moreover, since we have been active for many years in the Open Source community, we are already used to co-operating with others in a distributed development process. @@ -116,7 +117,8 @@ PyPy is an Open Language. ASK_STOCKHOLM. So they have just asked us to make them a language? Or they just want us to use a language to -make what we are making? +make what we are making? [XXX nico: Logilab is making agent software +and would very much like to use pypy for that] In addition, related foundational research, to be implemented by Specific Targeted Research Projects and Coordination @@ -145,7 +147,8 @@ ASK_STOCKHOLM I don't know how to find out which work implemented under EUREKA/ITEA was implemented using Python. I do know of 2 prior -IST projects. FIXME: add URL for ASWAD. A faster Python will enhance +IST projects. ASWAD: http://wwww.aswad-project.org. +A faster Python will enhance any project done in Python. Also, if this means that EUREKA/ITEA has more pots of money that they would like to hand us, we'd love to take it. Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- pypy/trunk/doc/funding/B2.0.0_new_relevance.txt (original) +++ pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Thu Oct 2 20:41:16 2003 @@ -36,6 +36,8 @@ :DELETE:END +XXXFIXME: proof-read this + Relevance to the Objectives of the IST Priority -------------------------------------------------- @@ -208,7 +210,7 @@ Links and Complimentary with Other Programmes +++++++++++++++++++++++++++++++++++++++++++++++++ -Direct Info/Semantic Web, correct? +Direct Info/Semantic Web, correct? ask Alastair and Armin to talk about their current projects :DELETE:BEGIN Modified: pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.txt (original) +++ pypy/trunk/doc/funding/B4.0_resources.txt Thu Oct 2 20:41:16 2003 @@ -21,4 +21,54 @@ The consortium and project resources ===================================== -add something! \ No newline at end of file +XXXFIXME check below information + +**DFKI** + + Role: Project Coordinator & Technical Partner + Country: Germany + Contact: Alastair Burt + + Skills, Commitment, Resources: + + +**AB Strakt** + + Role: Project Management & Technical Partner + Country: Sweden + Contact: Jacob Hallen + + Skills, Commitment, Resources: + + +**University of Southampton** + + Role: Technical Partner + Country: United Kingdom + Contact: Armin Rigo + + Skills, Commitment, Resources: + + +**Python Business Forum** + + Role: Technical Partner + Country: Europe + Contact: Laura Creighton (?) + + Skills, Commitment, Resources: + +**Logilab** + + Role: Technical Partner + Country: France + Contact: Nicolas Chauvat + + Skills, Commitment, Resources: advanced computing, artificial intelligence, + applying new techniques to solve industrial clients' problems. XXXFIXME + + +Infrae(?) Dutch Holger Kregel + +interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, +anna ravenscroft, gunter janton, samuele pedroni Modified: pypy/trunk/doc/funding/B4.1_subcontracting.txt ============================================================================== --- pypy/trunk/doc/funding/B4.1_subcontracting.txt (original) +++ pypy/trunk/doc/funding/B4.1_subcontracting.txt Thu Oct 2 20:41:16 2003 @@ -22,7 +22,7 @@ ASK_STOCKHOLM Do I have to discuss this? -:: +:DELETE:BEGIN FIXME should we mention that other people out of the project @@ -30,3 +30,7 @@ as is always the case in this kind of open source project? maybe these contribution would not be significant to the primary WP goals. + +nico: no need to mention this in the sub-contracting section + +:DELETE:END \ No newline at end of file Modified: pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_management.txt (original) +++ pypy/trunk/doc/funding/B5.0_management.txt Thu Oct 2 20:41:16 2003 @@ -15,3 +15,23 @@ ===================== add text! + +XXXFIXME + +here we need to say + +1. who coordinates the project + +2. who manages the project + +3. that we produces free software (solves IP issues) + +4. use internet to collaborate (web site, mailing list, etc.) + +5. we often do sprints + +6. we intend to hold project meetings every X months + +7. we use a versioning system to hold documents and doc and this + ensures tracking and helps greatly with quality + Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Thu Oct 2 20:41:16 2003 @@ -52,3 +52,11 @@ In this section, we describe in detail the work planned to achieve the objectives for the full duration of the proposed project. + +XXXFIXME: see B0.1 for phases + +Phase 1 is technical development of State of The Art interpreter + +Phase 2 is research and innovation to produce high performance interpreter + +Phase 3 is validation and dissemination through implementation of applications From tismer at codespeak.net Fri Oct 3 10:06:43 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 10:06:43 +0200 (MEST) Subject: [pypy-svn] rev 1531 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031003080643.BD1605A143@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 10:06:41 2003 New Revision: 1531 Added: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt (props changed) - copied unchanged from rev 1530, pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization Removed: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization Modified: pypy/trunk/doc/funding/makedoc/format.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw pypy/trunk/doc/funding/wp-tablebegin.asc pypy/trunk/doc/funding/wp-toptable.asc Log: small script changes, changed file name to .txt... Deleted: /pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization Fri Oct 3 10:06:41 2003 +++ (empty file) @@ -1,64 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Dynamic optimizations and features -.. |wp| replace:: WP44 -.. |start| replace:: M2 -.. |p1| replace:: AR -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Y -.. |m3| replace:: 2 -.. |p4| replace:: Z -.. |m4| replace:: 2 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Enhance PyPy to dynamically adapt to its run-time environment and -to the characteristics of the running program. Dramatically -increase speed by enabling Just-In-Time compilation and -specialization. Address multiple processor architectures. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Apply and enhance techniques from the Psyco project. Promote parts -of the static translator to be used for run-time specialization. - -**Task 2** - -Design and implement a back-end component for dynamically emitting -machine code for multiple processor architectures. Enable dynamic -foreign function calls. - -**Task 3** - -Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP42_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. -- DL??? A Just-In-Time compiler for PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/makedoc/format.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/format.py (original) +++ pypy/trunk/doc/funding/makedoc/format.py Fri Oct 3 10:06:41 2003 @@ -249,7 +249,7 @@ def changeStyle(txt): txt = str(cut(txt)) - #txt = str(replaceMargin(txt)) + txt = str(replaceMargin(txt)) # not correct yet txt = str(format(txt)) return txt @@ -258,6 +258,6 @@ import sys fn = sys.argv[1] content = open(fn).read() - #f = format(str(replaceMargin(content))) + f = format(str(replaceMargin(content))) f = str(format(content)) print f Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/wp-tablebegin.asc ============================================================================== --- pypy/trunk/doc/funding/wp-tablebegin.asc (original) +++ pypy/trunk/doc/funding/wp-tablebegin.asc Fri Oct 3 10:06:41 2003 @@ -8,4 +8,4 @@ - Modified: pypy/trunk/doc/funding/wp-toptable.asc ============================================================================== --- pypy/trunk/doc/funding/wp-toptable.asc (original) +++ pypy/trunk/doc/funding/wp-toptable.asc Thu Oct 9 14:17:27 2003 @@ -1,7 +1,4 @@ -.. create a nearly exact table for the WPs -.. note that you must define *all* the |xxx| references. - .. raw:: html

From tismer at codespeak.net Thu Oct 9 14:19:14 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 14:19:14 +0200 (MEST) Subject: [pypy-svn] rev 1643 - pypy/trunk/doc/funding/makedoc Message-ID: <20031009121914.76FA55A94C@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 14:19:13 2003 New Revision: 1643 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf Log: generated new PDF (yes the tables look bad, this will be formatted after we created it the last time before freeze) Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. From tismer at codespeak.net Thu Oct 9 14:42:30 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 14:42:30 +0200 (MEST) Subject: [pypy-svn] rev 1644 - pypy/trunk/doc/funding/makedoc Message-ID: <20031009124230.D86235A94C@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 14:42:29 2003 New Revision: 1644 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: added a footer, changed header format, to produce less pages. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Thu Oct 9 14:43:24 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 14:43:24 +0200 (MEST) Subject: [pypy-svn] rev 1645 - pypy/trunk/doc/funding/makedoc Message-ID: <20031009124324.C582B5A94C@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 14:43:23 2003 New Revision: 1645 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf Log: new PDF Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Thu Oct 9 14:58:08 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 9 Oct 2003 14:58:08 +0200 (MEST) Subject: [pypy-svn] rev 1646 - pypy/trunk/doc/funding Message-ID: <20031009125808.7D5C55A94C@thoth.codespeak.net> Author: pedronis Date: Thu Oct 9 14:58:07 2003 New Revision: 1646 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: removed stray text after Beyond the State of the Art using :DELETE:_ Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 14:58:07 2003 @@ -149,7 +149,7 @@ * logic programming, * aspect-oriented programming -!!! reuse some of this: +!!! reuse some of this: DONE! Our goal is to attack both the performance and flexibility problems at the same time, by reimplementing/capturing the semantics of Python in @@ -425,8 +425,6 @@ expressive languages can be static and efficient [OCAML] while inexpressive ones can be dynamic and much less efficient [PROLOG]. -:DELETE:END - The PyPy project -- phase one -- aims to write a Python interpreter using Python itself as the implementation language for flexibility, with the additional constraint that core parts should be written in a more @@ -570,6 +568,8 @@ In summary, to translate PyPy itself to C, we will be using PyPy! +:DELETE:END + :DELETE:BEGIN XXX this chapter shoud **have the following structure** @@ -594,6 +594,11 @@ compared to its potential benefits - high risk may be acceptable in return for high benefits. Avoid very large or unacceptable levels of risk. +:DELETE:END + +:DELETE:BEGIN + +FIXME: to be ReSTified References: From tismer at codespeak.net Thu Oct 9 15:04:00 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 15:04:00 +0200 (MEST) Subject: [pypy-svn] rev 1647 - pypy/trunk/doc/funding/makedoc Message-ID: <20031009130400.0AB995A94C@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 15:03:59 2003 New Revision: 1647 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: new PDF after Samuele's changes. Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Thu Oct 9 15:24:59 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 15:24:59 +0200 (MEST) Subject: [pypy-svn] rev 1648 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031009132459.3E2BE5A94C@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 15:24:57 2003 New Revision: 1648 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: reSTified the references in objectives. BUT this creates quite funny tables, which we need to edit in the final doc! Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 15:24:57 2003 @@ -177,7 +177,7 @@ Current State of The Art ------------------------------ -Haskell monadic modular interpreters [popl95.ps.gz][dsl.ps.gz] are a +Haskell monadic modular interpreters [popl95.ps.gz]_ [dsl.ps.gz]_ are a researched attempt at achieving modularity for interpreters. They have not been tried on something as large as Python, as approach it is hard to relate to for programmers accustomed to more conventional OO @@ -195,8 +195,8 @@ In its basics the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running low-level code version trough a translation process has already been -taken, e.g. for the Scheme (Scheme 48)[kelsey97prescheme.pdf] and the -Smalltalk (Squeak) [OOPSLA.Squeak.html] languages. Obtaining in this +taken, e.g. for the Scheme (Scheme 48) [kelsey97prescheme.pdf]_ and the +Smalltalk (Squeak) [OOPSLA.Squeak.html]_ languages. Obtaining in this way an interpreter comparable with current C Python implementation is within current state of the art, but successively we plan to exploit the gained flexibility much further, separating concerns between the @@ -204,8 +204,8 @@ and its semantics and further pluggable modules for both. JIT compilers have been reasonably well studied; an account of their -history is given in [jit-history.pdf]. But actually writing a JIT for -a given language is generally a major task [oopsla-vm-wkshp.pdf]. +history is given in [jit-history.pdf]_ . But actually writing a JIT for +a given language is generally a major task [oopsla-vm-wkshp.pdf]_ . Different techniques to ease this path have been recently explored; let us cite: @@ -216,7 +216,7 @@ possible to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the - Self virtual machine in [oopsla-vm-wkshp.pdf]. As pointed out in + Self virtual machine in [oopsla-vm-wkshp.pdf]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue arises, we are left with the hard problem of refactoring an efficient JIT-based @@ -228,11 +228,11 @@ has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the processor-time interpretative overhead - [ivme03.pdf]. While this offers a highly competitive gain/effort + [ivme03.pdf]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. Current Python C implementation (CPython) is a straight-forward bytecode -interpreter. Psyco [psyco] XXX [ucpy-reverse-engineering-python.pdf] is +interpreter. Psyco [psyco]_ XXX [ucpy-reverse-engineering-python.pdf]_ is an extension to it implementing a prototype JIT. Psyco is more precisely a specializing JIT compiler based on abstract @@ -240,8 +240,8 @@ over-eager. It gathers statistics to applies itself only on often executed code and performs well for algorithmic code and built-in types. It would likely benefit from integration with type-feedback -techniques as developed for Self [hlzle91optimizing.ps.gz] -[reconciling-responsiveness-with-performance.pdf] to deal more +techniques as developed for Self [hlzle91optimizing.ps.gz]_ +[reconciling-responsiveness-with-performance.pdf]_ to deal more effectively with (highly) polymorphic call-sites. In its current incarnation it is also a delicate hand-crafted piece @@ -270,7 +270,7 @@ Many of these aspects are really cross-cutting concerns in the original AOP sense. In general our approach relates to the seminal -AOP ideas in [kiczales97aspectoriented.pdf], although they have not been +AOP ideas in [kiczales97aspectoriented.pdf]_, although they have not been used on the interpreter for a large practical language. Our subset of Python in which to express the core interpreter and Object Spaces is the component language in the terminology of the paper, while the @@ -338,12 +338,12 @@ difficult to factor into relatively independent components, which makes structural changes to a large interpreter cumbersome. While the efficiency costs are well-known, the costs inherent to the lack -flexibility [popl95.ps.gz][dsl.ps.gz] are often underestimated by the community of language +flexibility [popl95.ps.gz]_ [dsl.ps.gz]_ are often underestimated by the community of language users. In practice, what often occurs for newly popular languages is that the user base creates pressure about the efficiency issue and motivates a group of developers to write a native Just In Time (JIT) compiler, adding a significant amount of code and complexity and further -impairing the flexibility.[ivme03.pdf] +impairing the flexibility.[ivme03.pdf]_ The Flexibility Goal @@ -430,8 +430,8 @@ the additional constraint that core parts should be written in a more static subset of the language, a restriction that opens the door to static analysis and translation to a low-level language like C. This -approach has already been taken, e.g. for the Scheme [kelsey97prescheme.pdf] -and Squeak [OOPSLA.Squeak.html] language, but we have an original approach +approach has already been taken, e.g. for the Scheme [kelsey97prescheme.pdf]_ +and Squeak [OOPSLA.Squeak.html]_ language, but we have an original approach to the translation process that we will describe later. The net result will be an interpreter whose performance is comparable to @@ -468,7 +468,7 @@ ------------- JIT compilers have been reasonably well studied; an account of their -history is given in [jit-history.pdf]. But actually writing a JIT for +history is given in [jit-history.pdf]_ . But actually writing a JIT for a given language is generally a major task. Different techniques to ease this path have been recently explored; let us cite: @@ -479,20 +479,20 @@ to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the Self virtual machine - in [oopsla-vm-wkshp.pdf]. + in [oopsla-vm-wkshp.pdf]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue araises, we are left with the hard problem of refactoring an efficient JIT-based virtual machine. - XXX state-of-the-art in Self: [hlzle91optimizing.ps.gz] - [reconciling-responsiveness-with-performance.pdf]. + XXX state-of-the-art in Self: [hlzle91optimizing.ps.gz]_ + [reconciling-responsiveness-with-performance.pdf]_ . * a completely different approach: making it easier to derive a JIT from an existing C interpreter. DynamoRIO instrumentates the execution of compiled programs and optimizes them dynamically. It has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the - processor-time interpretative overhead [ivme03.pdf]. While this offers a + processor-time interpretative overhead [ivme03.pdf]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. @@ -506,8 +506,8 @@ high-level Python source of PyPy. This will be accomplished by integrating the technology developed in -Psyco [psyco], a prototype JIT for the Python programming language. -XXX [ucpy-reverse-engineering-python.pdf] +Psyco [psyco]_ , a prototype JIT for the Python programming language. +XXX [ucpy-reverse-engineering-python.pdf]_ It is more precisely a specializing JIT compiler based on abstract interpretation. @@ -596,56 +596,51 @@ :DELETE:END -:DELETE:BEGIN - -FIXME: to be ReSTified - References: -[popl95.ps.gz] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers -and Modular Interpreters". 22nd ACM Symposium on Principles of Programming -Languages (POPL'95). January 1995. -http://java.sun.com/people/sl/papers/popl95.ps.gz - -[dsl.ps.gz] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. -http://haskell.org/frp/dsl.ps - -[ivme03.pdf] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. -http://www.ai.mit.edu/~gregs/dynamorio.html - -[kelsey97prescheme.pdf] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. -http://citeseer.nj.nec.com/kelsey97prescheme.html - -[OOPSLA.Squeak.html] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. -ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html - -[jit-history.pdf] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. - -[oopsla-vm-wkshp.pdf] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop -on Simplicity, Performance and Portability in Virtual Machine Design, -OOPSLA '99, Denver, CO, Nov 2, 1999. -http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf - -[hlzle91optimizing.ps.gz] Urs H?lzle, Craig Chambers, and David Ungar, -"Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic -Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published -as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, -Berlin, 1991. -http://self.sunlabs.com/papers/ecoop91.ps.Z - -[reconciling-responsiveness-with-performance.pdf] Urs H?lzle, David Ungar, -"Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", -PLDI '94 and OOPSLA '94 -http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf - -[psyco] Armin Rigo, http://psyco.sourceforge.net - -[ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. -http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf - -[kiczales97aspectoriented.pdf] Gregor Kiczales and John Lamping and -Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc -Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 -http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf +.. [popl95.ps.gz] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers + and Modular Interpreters". 22nd ACM Symposium on Principles of Programming + Languages (POPL'95). January 1995. + http://java.sun.com/people/sl/papers/popl95.ps.gz + +.. [dsl.ps.gz] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. + http://haskell.org/frp/dsl.ps + +.. [ivme03.pdf] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. + http://www.ai.mit.edu/~gregs/dynamorio.html + +.. [kelsey97prescheme.pdf] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. + http://citeseer.nj.nec.com/kelsey97prescheme.html + +.. [OOPSLA.Squeak.html] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +.. [jit-history.pdf] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. + +.. [oopsla-vm-wkshp.pdf] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop + on Simplicity, Performance and Portability in Virtual Machine Design, + OOPSLA '99, Denver, CO, Nov 2, 1999. + http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + +.. [hlzle91optimizing.ps.gz] Urs H?lzle, Craig Chambers, and David Ungar, + "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic + Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published + as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, + Berlin, 1991. + http://self.sunlabs.com/papers/ecoop91.ps.Z + +.. [reconciling-responsiveness-with-performance.pdf] Urs H?lzle, David Ungar, + "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", + PLDI '94 and OOPSLA '94 + http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf + +.. [psyco] Armin Rigo, http://psyco.sourceforge.net + +.. [ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. + http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf + +.. [kiczales97aspectoriented.pdf] Gregor Kiczales and John Lamping and + Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc + Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 + http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf -:DELETE:END Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Thu Oct 9 17:50:18 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 9 Oct 2003 17:50:18 +0200 (MEST) Subject: [pypy-svn] rev 1649 - pypy/trunk/doc/funding Message-ID: <20031009155018.866285A94C@thoth.codespeak.net> Author: pedronis Date: Thu Oct 9 17:50:17 2003 New Revision: 1649 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: converted references to use numbers added ReST comments of the form .. file = to still keep track of the corresponding files under svn added para about Integr/Config tools. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 17:50:17 2003 @@ -65,7 +65,7 @@ the expense of other aspects (simplicity, flexibility), possibly culminating with the introduction of a native JIT, adding a significant amount of code and complexity and further impairing the -flexibility.[ivme03.pdf] +flexibility. [1]_ Subsequently, application developers are often left with bad choices not only for productivity versus performance, but they have to work around @@ -125,7 +125,7 @@ expense of other aspects (simplicity, flexibility again), possibly culminating with the introduction of a native JIT, adding a significant amount of code and complexity and further impairing the -flexibility.[ivme03.pdf] +flexibility. [1]_ Taylorability is armed, e.g. subsetting and adaptation for small memory footprint and small devices, while today's applications are to @@ -177,7 +177,7 @@ Current State of The Art ------------------------------ -Haskell monadic modular interpreters [popl95.ps.gz]_ [dsl.ps.gz]_ are a +Haskell monadic modular interpreters [2]_ [3]_ are a researched attempt at achieving modularity for interpreters. They have not been tried on something as large as Python, as approach it is hard to relate to for programmers accustomed to more conventional OO @@ -195,8 +195,8 @@ In its basics the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running low-level code version trough a translation process has already been -taken, e.g. for the Scheme (Scheme 48) [kelsey97prescheme.pdf]_ and the -Smalltalk (Squeak) [OOPSLA.Squeak.html]_ languages. Obtaining in this +taken, e.g. for the Scheme (Scheme 48) [4]_ and the +Smalltalk (Squeak) [5]_ languages. Obtaining in this way an interpreter comparable with current C Python implementation is within current state of the art, but successively we plan to exploit the gained flexibility much further, separating concerns between the @@ -204,8 +204,8 @@ and its semantics and further pluggable modules for both. JIT compilers have been reasonably well studied; an account of their -history is given in [jit-history.pdf]_ . But actually writing a JIT for -a given language is generally a major task [oopsla-vm-wkshp.pdf]_ . +history is given in [6]_ . But actually writing a JIT for +a given language is generally a major task [7]_ . Different techniques to ease this path have been recently explored; let us cite: @@ -216,7 +216,7 @@ possible to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the - Self virtual machine in [oopsla-vm-wkshp.pdf]_ . As pointed out in + Self virtual machine in [7]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue arises, we are left with the hard problem of refactoring an efficient JIT-based @@ -228,20 +228,22 @@ has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the processor-time interpretative overhead - [ivme03.pdf]_ . While this offers a highly competitive gain/effort + [1]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. Current Python C implementation (CPython) is a straight-forward bytecode -interpreter. Psyco [psyco]_ XXX [ucpy-reverse-engineering-python.pdf]_ is +interpreter. Psyco [8]_ XXX [9]_ is an extension to it implementing a prototype JIT. +FIXME_ARMIN + Psyco is more precisely a specializing JIT compiler based on abstract interpretation. It specializes on values using heuristics not to be over-eager. It gathers statistics to applies itself only on often executed code and performs well for algorithmic code and built-in types. It would likely benefit from integration with type-feedback -techniques as developed for Self [hlzle91optimizing.ps.gz]_ -[reconciling-responsiveness-with-performance.pdf]_ to deal more +techniques as developed for Self [10]_ +[11]_ to deal more effectively with (highly) polymorphic call-sites. In its current incarnation it is also a delicate hand-crafted piece @@ -260,8 +262,8 @@ fixed single interpreter in all its details in a subset of our VHLL (Python). We plan to exploit the flexibility and abstraction gained by the using of the VHLL subset and the indirectness of translation, in -order to weave aspect such as memory management, object layout etc at -translation time. +order to weave aspect such as memory management, object layout, +threading model etc at translation time. In general we will explore for each feature and extension how to best implement it by separating concerns between OO-customized Object @@ -270,7 +272,7 @@ Many of these aspects are really cross-cutting concerns in the original AOP sense. In general our approach relates to the seminal -AOP ideas in [kiczales97aspectoriented.pdf]_, although they have not been +AOP ideas in [12]_, although they have not been used on the interpreter for a large practical language. Our subset of Python in which to express the core interpreter and Object Spaces is the component language in the terminology of the paper, while the @@ -282,6 +284,8 @@ Object Spaces to be runnable as a normal Python program on a Python interpreter. +FIXME_ARMIN + XXX something about what is innovative in the translator itself? XXX currently the "The Translator section" @@ -310,6 +314,11 @@ to) the normal C expressions that would be the direct translation. XXX /edit +Finally we expect to develop automatic tools that should allow +language users to compose and construct interpreters in a streamlined +way from choices about aspects and predefined or user-supplied +extensions. + :DELETE:BEGIN Introduction @@ -338,12 +347,12 @@ difficult to factor into relatively independent components, which makes structural changes to a large interpreter cumbersome. While the efficiency costs are well-known, the costs inherent to the lack -flexibility [popl95.ps.gz]_ [dsl.ps.gz]_ are often underestimated by the community of language +flexibility [2]_ [3]_ are often underestimated by the community of language users. In practice, what often occurs for newly popular languages is that the user base creates pressure about the efficiency issue and motivates a group of developers to write a native Just In Time (JIT) compiler, adding a significant amount of code and complexity and further -impairing the flexibility.[ivme03.pdf]_ +impairing the flexibility. [1]_ The Flexibility Goal @@ -430,8 +439,8 @@ the additional constraint that core parts should be written in a more static subset of the language, a restriction that opens the door to static analysis and translation to a low-level language like C. This -approach has already been taken, e.g. for the Scheme [kelsey97prescheme.pdf]_ -and Squeak [OOPSLA.Squeak.html]_ language, but we have an original approach +approach has already been taken, e.g. for the Scheme [4]_ +and Squeak [5]_ language, but we have an original approach to the translation process that we will describe later. The net result will be an interpreter whose performance is comparable to @@ -468,7 +477,7 @@ ------------- JIT compilers have been reasonably well studied; an account of their -history is given in [jit-history.pdf]_ . But actually writing a JIT for +history is given in [6]_ . But actually writing a JIT for a given language is generally a major task. Different techniques to ease this path have been recently explored; let us cite: @@ -479,20 +488,20 @@ to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the Self virtual machine - in [oopsla-vm-wkshp.pdf]_ . + in [7]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue araises, we are left with the hard problem of refactoring an efficient JIT-based virtual machine. - XXX state-of-the-art in Self: [hlzle91optimizing.ps.gz]_ - [reconciling-responsiveness-with-performance.pdf]_ . + XXX state-of-the-art in Self: [10]_ + [11]_ . * a completely different approach: making it easier to derive a JIT from an existing C interpreter. DynamoRIO instrumentates the execution of compiled programs and optimizes them dynamically. It has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the - processor-time interpretative overhead [ivme03.pdf]_ . While this offers a + processor-time interpretative overhead [1]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. @@ -506,8 +515,8 @@ high-level Python source of PyPy. This will be accomplished by integrating the technology developed in -Psyco [psyco]_ , a prototype JIT for the Python programming language. -XXX [ucpy-reverse-engineering-python.pdf]_ +Psyco [8]_ , a prototype JIT for the Python programming language. +XXX [9]_ It is more precisely a specializing JIT compiler based on abstract interpretation. @@ -597,50 +606,62 @@ :DELETE:END References: +.. [1] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. + http://www.ai.mit.edu/~gregs/dynamorio.html +.. file = ivme03.pdf -.. [popl95.ps.gz] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers +.. [2] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers and Modular Interpreters". 22nd ACM Symposium on Principles of Programming Languages (POPL'95). January 1995. http://java.sun.com/people/sl/papers/popl95.ps.gz +.. file = popl95.ps.gz -.. [dsl.ps.gz] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. +.. [3] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. http://haskell.org/frp/dsl.ps +.. file = dsl.ps.gz -.. [ivme03.pdf] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. - http://www.ai.mit.edu/~gregs/dynamorio.html - -.. [kelsey97prescheme.pdf] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. +.. [4] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. http://citeseer.nj.nec.com/kelsey97prescheme.html +.. file = kelsey97prescheme.pdf -.. [OOPSLA.Squeak.html] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. +.. [5] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html +.. file = OOPSLA.Squeak.htm -.. [jit-history.pdf] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. +.. [6] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. +.. file = jit-history.pdf -.. [oopsla-vm-wkshp.pdf] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop +.. [7] Mario Wolczko, Ole Agesen, David Ungar, + "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf +.. file = oopsla-vm-wkshp.pdf + +.. [8] Armin Rigo, http://psyco.sourceforge.net +.. file = xxx? -.. [hlzle91optimizing.ps.gz] Urs H?lzle, Craig Chambers, and David Ungar, +.. [9] John Aycock and David Pereira and Georges Jodoin, + "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. + http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf +.. file = ucpy-reverse-engineering-python.pdf + +.. [10] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, Berlin, 1991. http://self.sunlabs.com/papers/ecoop91.ps.Z +.. file = hlzle91optimizing.ps.gz -.. [reconciling-responsiveness-with-performance.pdf] Urs H?lzle, David Ungar, +.. [11] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", PLDI '94 and OOPSLA '94 http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf +.. file = reconciling-responsiveness-with-performance.pdf -.. [psyco] Armin Rigo, http://psyco.sourceforge.net - -.. [ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. - http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf - -.. [kiczales97aspectoriented.pdf] Gregor Kiczales and John Lamping and +.. [12] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf - +.. file = kiczales97aspectoriented.pdf From tismer at codespeak.net Thu Oct 9 18:46:06 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 18:46:06 +0200 (MEST) Subject: [pypy-svn] rev 1650 - pypy/trunk/doc/funding Message-ID: <20031009164606.5AFFC5AD99@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 18:46:05 2003 New Revision: 1650 Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp11_validations.txt pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Log: corrected the WP numbers. Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp01_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp01_management.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Project Coordination and Management -.. |wp| replace:: WP10 +.. |wp| replace:: WP01 .. |start| replace:: 1 .. |p1| replace:: X* .. |m1| replace:: 24 Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Maintenance of Tools -.. |wp| replace:: WP70 +.. |wp| replace:: WP02 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Synchronisation with Standard Python -.. |wp| replace:: WP80 +.. |wp| replace:: WP03 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 6 Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: The PyPy Core -.. |wp| replace:: WP20 +.. |wp| replace:: WP04 .. |start| replace:: 0 .. |p1| replace:: |e| .. |m1| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: The PyPy Translation -.. |wp| replace:: WP30 +.. |wp| replace:: WP05 .. |start| replace:: 0 .. |p1| replace:: |e| .. |m1| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Dynamic optimizations and features -.. |wp| replace:: WP44 +.. |wp| replace:: WP06 .. |start| replace:: M2 .. |p1| replace:: AR .. |m1| replace:: 6 Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Translator Optimisations -.. |wp| replace:: WP43 +.. |wp| replace:: WP07 .. |start| replace:: M2 .. |p1| replace:: X .. |m1| replace:: 6 Modified: pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Core Optimisations -.. |wp| replace:: WP42 +.. |wp| replace:: WP08 .. |start| replace:: M2 .. |p1| replace:: X .. |m1| replace:: 4 Modified: pypy/trunk/doc/funding/B6.7.wp11_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_validations.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Validation of PyPy -.. |wp| replace:: WP50 +.. |wp| replace:: WP11 .. |start| replace:: M4/M3 .. |p1| replace:: |e| .. |m1| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Integration and Configuration -.. |wp| replace:: WP59 +.. |wp| replace:: WP12 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Thu Oct 9 18:46:05 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Project Documentation and Dissemination -.. |wp| replace:: WP60 +.. |wp| replace:: WP14 .. |start| replace:: 0 .. |p1| replace:: AM .. |m1| replace:: 19 From arigo at codespeak.net Thu Oct 9 19:00:36 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 9 Oct 2003 19:00:36 +0200 (MEST) Subject: [pypy-svn] rev 1651 - in pypy/trunk/doc: . funding Message-ID: <20031009170036.063855AD99@thoth.codespeak.net> Author: arigo Date: Thu Oct 9 19:00:35 2003 New Revision: 1651 Added: pypy/trunk/doc/psycoguide.ps.gz (contents, props changed) Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Fixed references, added a Psyco "paper" Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 19:00:35 2003 @@ -20,16 +20,6 @@ :DELETE:END -FIXME_ARMIN: shorten introduction to fit in 3 pages -then refactor to fit with following plan: - -B.1.1 Problem to be solved - -B.1.2 Quantified specific objective - -B.1.3 Current State of The Art - -B.1.4 Beyond State of The Art Scientific and technological objectives of the project & state of the art =============================================================================== @@ -65,7 +55,7 @@ the expense of other aspects (simplicity, flexibility), possibly culminating with the introduction of a native JIT, adding a significant amount of code and complexity and further impairing the -flexibility. [1]_ +flexibility. [S03]_ Subsequently, application developers are often left with bad choices not only for productivity versus performance, but they have to work around @@ -125,7 +115,7 @@ expense of other aspects (simplicity, flexibility again), possibly culminating with the introduction of a native JIT, adding a significant amount of code and complexity and further impairing the -flexibility. [1]_ +flexibility. [S03]_ Taylorability is armed, e.g. subsetting and adaptation for small memory footprint and small devices, while today's applications are to @@ -177,7 +167,7 @@ Current State of The Art ------------------------------ -Haskell monadic modular interpreters [2]_ [3]_ are a +Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have not been tried on something as large as Python, as approach it is hard to relate to for programmers accustomed to more conventional OO @@ -195,8 +185,8 @@ In its basics the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running low-level code version trough a translation process has already been -taken, e.g. for the Scheme (Scheme 48) [4]_ and the -Smalltalk (Squeak) [5]_ languages. Obtaining in this +taken, e.g. for the Scheme (Scheme 48) [K97]_ and the +Smalltalk (Squeak) [IKM97]_ languages. Obtaining in this way an interpreter comparable with current C Python implementation is within current state of the art, but successively we plan to exploit the gained flexibility much further, separating concerns between the @@ -204,8 +194,8 @@ and its semantics and further pluggable modules for both. JIT compilers have been reasonably well studied; an account of their -history is given in [6]_ . But actually writing a JIT for -a given language is generally a major task [7]_ . +history is given in [A03]_ . But actually writing a JIT for +a given language is generally a major task [WAU99]_ . Different techniques to ease this path have been recently explored; let us cite: @@ -216,7 +206,7 @@ possible to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the - Self virtual machine in [7]_ . As pointed out in + Self virtual machine in [WAU99]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue arises, we are left with the hard problem of refactoring an efficient JIT-based @@ -228,27 +218,17 @@ has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the processor-time interpretative overhead - [1]_ . While this offers a highly competitive gain/effort + [S03]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. -Current Python C implementation (CPython) is a straight-forward bytecode -interpreter. Psyco [8]_ XXX [9]_ is -an extension to it implementing a prototype JIT. - -FIXME_ARMIN - -Psyco is more precisely a specializing JIT compiler based on abstract -interpretation. It specializes on values using heuristics not to be -over-eager. It gathers statistics to applies itself only on often -executed code and performs well for algorithmic code and built-in -types. It would likely benefit from integration with type-feedback -techniques as developed for Self [10]_ -[11]_ to deal more -effectively with (highly) polymorphic call-sites. - +The current Python C implementation (CPython) is a straight-forward bytecode +interpreter. Psyco [R03]_ is an extension to it implementing a highly +experimental [APJ03]_ specializing JIT compiler based on abstract interpretation. In its current incarnation it is also a delicate hand-crafted piece -of code, which is hard to maintain. But this should not inherently be the -case. +of code, which is hard to maintain and not flexible. But this should not +inherently be the case. Moreover it would likely benefit from integration +with type-feedback techniques as developed for Self [HCU91]_ [HU94]_. + Beyond State of The Art ----------------------------- @@ -258,12 +238,12 @@ data structures (frame stack, bytecode objects...); each individual operation on objects is dispatched to the object space. -Differently from cited related to work, we don't expect to encode a +Unlike the related work previously cited, we don't expect to encode a fixed single interpreter in all its details in a subset of our VHLL (Python). We plan to exploit the flexibility and abstraction gained by -the using of the VHLL subset and the indirectness of translation, in -order to weave aspect such as memory management, object layout, -threading model etc at translation time. +using the VHLL and -- most importantly -- the indirectness of translation, +in order to weave aspect such as memory management, object layout, +threading model etc. at translation time. In general we will explore for each feature and extension how to best implement it by separating concerns between OO-customized Object @@ -272,17 +252,19 @@ Many of these aspects are really cross-cutting concerns in the original AOP sense. In general our approach relates to the seminal -AOP ideas in [12]_, although they have not been -used on the interpreter for a large practical language. Our subset of -Python in which to express the core interpreter and Object Spaces is +AOP ideas in [KLM97]_, although they have not been +used on interpreters for large practical languages. The subset of +Python in which we express the core interpreter and Object Spaces is the component language in the terminology of the paper, while the -translator which is also a weaver is expressed in full Python. For -describing aspects and at system definition time we will be able to -use the full dynamism of Python. +translator is a weaver. For describing aspects and at system +definition time we will be able to use the full dynamism of Python. For debugging and comprehensibility we expect the core interpreter and -Object Spaces to be runnable as a normal Python program on a Python -interpreter. +Object Spaces to be runnable as a normal Python program on the +reference CPython interpreter. + +The translator itself will be innovative in that it XXX WRITING +WRITING WRITING FIXME_ARMIN @@ -347,12 +329,12 @@ difficult to factor into relatively independent components, which makes structural changes to a large interpreter cumbersome. While the efficiency costs are well-known, the costs inherent to the lack -flexibility [2]_ [3]_ are often underestimated by the community of language +flexibility [LHJ95]_ [H98]_ are often underestimated by the community of language users. In practice, what often occurs for newly popular languages is that the user base creates pressure about the efficiency issue and motivates a group of developers to write a native Just In Time (JIT) compiler, adding a significant amount of code and complexity and further -impairing the flexibility. [1]_ +impairing the flexibility. [S03]_ The Flexibility Goal @@ -439,8 +421,8 @@ the additional constraint that core parts should be written in a more static subset of the language, a restriction that opens the door to static analysis and translation to a low-level language like C. This -approach has already been taken, e.g. for the Scheme [4]_ -and Squeak [5]_ language, but we have an original approach +approach has already been taken, e.g. for the Scheme [K97]_ +and Squeak [IKM97]_ language, but we have an original approach to the translation process that we will describe later. The net result will be an interpreter whose performance is comparable to @@ -477,7 +459,7 @@ ------------- JIT compilers have been reasonably well studied; an account of their -history is given in [6]_ . But actually writing a JIT for +history is given in [A03]_ . But actually writing a JIT for a given language is generally a major task. Different techniques to ease this path have been recently explored; let us cite: @@ -488,20 +470,20 @@ to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the Self virtual machine - in [7]_ . + in [WAU99]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue araises, we are left with the hard problem of refactoring an efficient JIT-based virtual machine. - XXX state-of-the-art in Self: [10]_ - [11]_ . + XXX state-of-the-art in Self: [HCU91]_ + [HU94]_ . * a completely different approach: making it easier to derive a JIT from an existing C interpreter. DynamoRIO instrumentates the execution of compiled programs and optimizes them dynamically. It has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the - processor-time interpretative overhead [1]_ . While this offers a + processor-time interpretative overhead [S03]_ . While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. @@ -515,8 +497,8 @@ high-level Python source of PyPy. This will be accomplished by integrating the technology developed in -Psyco [8]_ , a prototype JIT for the Python programming language. -XXX [9]_ +Psyco [R03]_ , a prototype JIT for the Python programming language. +XXX [APJ03]_ It is more precisely a specializing JIT compiler based on abstract interpretation. @@ -606,47 +588,47 @@ :DELETE:END References: -.. [1] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html .. file = ivme03.pdf -.. [2] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers +.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers and Modular Interpreters". 22nd ACM Symposium on Principles of Programming Languages (POPL'95). January 1995. http://java.sun.com/people/sl/papers/popl95.ps.gz .. file = popl95.ps.gz -.. [3] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. http://haskell.org/frp/dsl.ps .. file = dsl.ps.gz -.. [4] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. http://citeseer.nj.nec.com/kelsey97prescheme.html .. file = kelsey97prescheme.pdf -.. [5] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html .. file = OOPSLA.Squeak.htm -.. [6] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. +.. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. .. file = jit-history.pdf -.. [7] Mario Wolczko, Ole Agesen, David Ungar, +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf .. file = oopsla-vm-wkshp.pdf -.. [8] Armin Rigo, http://psyco.sourceforge.net -.. file = xxx? +.. [R03] Armin Rigo, http://psyco.sourceforge.net +.. file = psycoguide.ps.gz -.. [9] John Aycock and David Pereira and Georges Jodoin, +.. [APJ03] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf .. file = ucpy-reverse-engineering-python.pdf -.. [10] Urs H?lzle, Craig Chambers, and David Ungar, +.. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, @@ -654,13 +636,13 @@ http://self.sunlabs.com/papers/ecoop91.ps.Z .. file = hlzle91optimizing.ps.gz -.. [11] Urs H?lzle, David Ungar, +.. [HU94] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", PLDI '94 and OOPSLA '94 http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf .. file = reconciling-responsiveness-with-performance.pdf -.. [12] Gregor Kiczales and John Lamping and +.. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf Added: pypy/trunk/doc/psycoguide.ps.gz ============================================================================== Binary file. No diff available. From tismer at codespeak.net Thu Oct 9 19:10:20 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 19:10:20 +0200 (MEST) Subject: [pypy-svn] rev 1652 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031009171020.583AC5AD99@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 19:10:16 2003 New Revision: 1652 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: small reST correction, new PDF, off for today :-) Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 19:10:16 2003 @@ -588,6 +588,7 @@ :DELETE:END References: + .. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html .. file = ivme03.pdf Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From arigo at codespeak.net Thu Oct 9 19:31:11 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 9 Oct 2003 19:31:11 +0200 (MEST) Subject: [pypy-svn] rev 1653 - pypy/trunk/src/pypy/translator Message-ID: <20031009173111.4E4005AD99@thoth.codespeak.net> Author: arigo Date: Thu Oct 9 19:31:04 2003 New Revision: 1653 Added: pypy/trunk/src/pypy/translator/gencl.py (contents, props changed) Log: A Common Lisp generator! From sanxiyn. Still preliminary but already nice to have :-) Added: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/gencl.py Thu Oct 9 19:31:04 2003 @@ -0,0 +1,111 @@ +import autopath +from pypy.translator.flowmodel import * + +class Op: + def __init__(self, gen, op): + self.str = gen.str + self.opname = op.opname + self.args = op.args + self.result = op.result + def __call__(self): + meth_name = "op_" + self.opname + meth_default = self.op_default + meth = getattr(self, meth_name, meth_default) + meth() + def op_default(self): + print self.opname, "is missing" + def op_mod(self): + result, arg1, arg2 = map(self.str, (self.result,) + self.args) + print "(setq", result, "(mod", arg1, arg2, "))" + +class GenCL: + def __init__(self, fun): + self.fun = fun + self.blockref = {} + def str(self, obj): + if isinstance(obj, Variable): + return obj.pseudoname + def emit(self): + self.emit_defun(self.fun) + def emit_defun(self, fun): + print "(defun", fun.functionname, "(", + for arg in fun.get_args(): + print self.str(arg), + print ")" + print "(block nil" + self.emit_block(fun.startblock) + print ")" + print ")" + def emit_block(self, block): + print "(tagbody" + nb = len(self.blockref) + tag = self.blockref.setdefault(block, nb) + if tag != nb: + print "(go", "tag" + str(tag), ")" + print ")" # close tagbody + return + print "tag" + str(tag) + for op in block.operations: + emit_op = Op(self, op) + emit_op() + self.dispatch_branch(block.branch) + print ")" + def dispatch_branch(self, branch): + if isinstance(branch, Branch): + self.emit_branch(branch) + elif isinstance(branch, ConditionalBranch): + self.emit_conditional_branch(branch) + elif isinstance(branch, EndBranch): + self.emit_end_branch(branch) + else: + print branch.__class__, "is missing" + def emit_branch(self, branch): + source = branch.args + target = branch.target.input_args + for item in zip(source, target): + init, var = map(self.str, item) + print "(setq", var, init, ")" + self.emit_block(branch.target) + def emit_conditional_branch(self, branch): + # XXX: Fix this + print "(if (not (zerop", self.str(branch.condition), "))" + self.emit_branch(branch.ifbranch) + self.emit_branch(branch.elsebranch) + print ")" + def emit_end_branch(self, branch): + retval = self.str(branch.returnvalue) + print "(return", retval, ")" + +def my_gcd(a, b): + r = a % b + while r: + a = b + b = r + r = a % b + return b + +import sys +from pypy.objspace.flow import Space +from vpath.adapter.process import exec_cmd +from cStringIO import StringIO + +def test(func, *args): + fun = Space().build_flow(func) + gen = GenCL(fun) + out = StringIO() + sys.stdout = out + gen.emit() + sys.stdout = sys.__stdout__ + fp = file("test.lisp", "w") + fp.write(out.getvalue()) + print >>fp, "(write (", fun.functionname, + for arg in args: + print >>fp, str(arg), + print >>fp, "))" + fp.close() + output = exec_cmd("clisp test.lisp") + print "Python:", func(*args) + print "Lisp:", output + +if __name__ == "__main__": + test(my_gcd, 96, 64) From arigo at codespeak.net Thu Oct 9 19:44:49 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 9 Oct 2003 19:44:49 +0200 (MEST) Subject: [pypy-svn] rev 1654 - pypy/trunk/doc/funding Message-ID: <20031009174449.644125AD99@thoth.codespeak.net> Author: arigo Date: Thu Oct 9 19:44:47 2003 New Revision: 1654 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: All the content should now essentially be there -- if anything is still missing or still between :DELETE pairs, please say so! Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 19:44:47 2003 @@ -263,38 +263,32 @@ Object Spaces to be runnable as a normal Python program on the reference CPython interpreter. -The translator itself will be innovative in that it XXX WRITING -WRITING WRITING - -FIXME_ARMIN - -XXX something about what is innovative in the translator itself? -XXX currently the "The Translator section" - -XXX edit?: - -Although Psyco was hand-written, large parts have a one-to-one -correspondence to whole sections of the C Python interpreter. This is -uncommon for JITs, but Psyco's good results give ample -proof-of-concept. Moreover, this property can be explicitely related -to the DynamoRIO project cited above, which instrumentates the -interpreter itself. Indeed, the one-to-one correspondence between -parts of C Python and Psyco is as follows: to each expression in C -Python corresponds a more complex expression in Psyco, which does -instrumentation and optimisations. The difference with DynamoRIO is -that the latter analyses the machine code resulting from the -compilation of the interpreter at run-time. In Psyco, the one-to-one -correspondance is with the C source instead. It could certainly have -been done by automated analysis of the C source of C Python, but this -is difficult and error-prone. - -In the PyPy project, on the other hand, the source code of the -interpreter will be written in Python instead of C. This is much -easier to analyse safely. Thus, the plan is to raise the level further -and rely on yet another customisation of the translator, to let it -emit the complex Psyco-style expressions instead of (or in addition -to) the normal C expressions that would be the direct translation. -XXX /edit +The front-end of the translator itself will be innovative in that it is +based on abstract (symbolic) interpretation. The translation of code +from our Python subset (in particular the source of PyPy itself) will +thus be driven by PyPy's own Python interpreter, made symbolic by +plugging a custom Object Space. Weaving custom aspects will be done +mainly as intermediate stages, and by customizing the back-end to +generate low-level code in various styles as needed. For example, it can +be in continuation passing style (CPS), or it can target altogether +different runtime environments like Java -- the latter is a cheap way to +regenerate and subsequently maintain a replacement for Jython, the +Python interpreter written in Java. + +Another key innovative aspect of our project is to generate the JIT +compiler instead of writing it manually. Indeed, although Psyco was +hand-written, large parts have a one-to-one correspondence to whole +sections of the CPython interpreter. This is uncommon for JITs, but +Psyco's good results give ample proof-of-concept. (This property can be +explicitely related to the DynamoRIO project cited above, which +instrumentates the interpreter itself.) The one-to-one correspondence +between parts of CPython and Psyco is as follows: to each expression in +the source of CPython corresponds a more complex expression in Psyco, +which does instrumentation and optimisations. Our plan is thus to +generate automatically as much of the JIT as possible, by changing the +translator to generate instrumenting/optimizing C instructions instead +of (or in addition to) the normal C instructions that would be the +direct translation. Finally we expect to develop automatic tools that should allow language users to compose and construct interpreters in a streamlined From lac at codespeak.net Fri Oct 10 02:06:05 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 02:06:05 +0200 (MEST) Subject: [pypy-svn] rev 1655 - pypy/trunk/doc/funding Message-ID: <20031010000605.42A445A19B@thoth.codespeak.net> Author: lac Date: Fri Oct 10 02:06:03 2003 New Revision: 1655 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Bea D??ring just in. Christian, there are clouds of noxious fumes .... Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 02:06:03 2003 @@ -113,3 +113,12 @@ financial and government sectors, and was an Open Source advocate before the term was coined. Her passions: programming, empowerment of average citizens, and the Open Society. + +Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in +Sweden. She was recruited into the IT-industry to work as a project +manager for large scale education projects for the company NetGuide +Scandinavia, Gothenburg. Since 1998 she has been working with education +and development project management and management of education and +consultant departements, implementing Open Source strategies and Agile +development methods. Beatrice also teaches project management, leadership +and communication courses for Learning Tree International. From lac at codespeak.net Fri Oct 10 03:12:10 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 03:12:10 +0200 (MEST) Subject: [pypy-svn] rev 1656 - pypy/trunk/doc/funding Message-ID: <20031010011210.D58885A19B@thoth.codespeak.net> Author: lac Date: Fri Oct 10 03:12:10 2003 New Revision: 1656 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Girls win. Christian is still short a cv, as is Tomek. Weather forecast comments on particularly noxious clouds in or around Berlin .... Anna's cv. Changed conferences to EP and OSCON so as to emphasize the Python and OS aspects. Now you will tell me you also chaired many more .... Laura Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 03:12:10 2003 @@ -122,3 +122,16 @@ consultant departements, implementing Open Source strategies and Agile development methods. Beatrice also teaches project management, leadership and communication courses for Learning Tree International. + +Anna Ravenscroft: Started programming with Python in 2002, presenting +papers on teaching Python, serving as track chair at EuroPython and OSCON, +writing and technical-editing books and articles. Before 2002, +Instruction Administrator for a public transport company, managing +projects, teaching, developing course material, creating +websites. Earlier, Office Manager for a small training company, +creating and editing training documents and administering the firm's +NT LAN. Up to 1994, Distribution Coordinator for a large Financial +Services company, providing field communications and training for a +sales force of 7500. In the 1980's, served as Psychological Operations +Specialist in the US Army, receiving an Honors Degree in Russian. +Education: Liberal Arts, Univ. of MN. From lac at codespeak.net Fri Oct 10 11:24:29 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 11:24:29 +0200 (MEST) Subject: [pypy-svn] rev 1657 - pypy/trunk/doc/funding Message-ID: <20031010092429.0A4FB5A253@thoth.codespeak.net> Author: lac Date: Fri Oct 10 11:24:29 2003 New Revision: 1657 Added: pypy/trunk/doc/funding/B5.0_manage_bea.pdf pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Bea's first draft at Mangement Structure stuff. Comments especially wanted/welcome. Bea is very flexible -- if this isn't quite what you want, we will change it. Now isn't the time for long debates on this -- just let us know what changes you want. Laura Added: pypy/trunk/doc/funding/B5.0_manage_bea.pdf ============================================================================== Files (empty file) and pypy/trunk/doc/funding/B5.0_manage_bea.pdf Fri Oct 10 11:24:29 2003 differ Added: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 11:24:29 2003 @@ -0,0 +1,375 @@ + B 5.0 Project Management + + PyPy as a project will be implementing an agile development lifecycle.This choice of + development method will have effects on the way the project will be structured and managed. + + The project will have a structured project plan as is showed in this proposal (workpackages, + Gantt-chart, deliverables, quality control etc). It also means that the project process, once the + project get started, will work from a evaluate-feedback-change perspective, or so called + "learning loops" in which project management will continuosly follow up on the intital + project plan but also evaluate process, teameffectiveness, communication climate. From these + learning loops change, when necessary, will be applied throughout the process. + + To illustrate the focus on development process as well as project focus: + + Stakeholders; + - EU + - partners + - Python communities etc.etc + + + + + + +Development +process + + Sprint/ Sprint/ Sprint/ Sprint/ Sprint/ + team team team team team + +Project process + + + + + + + + + + + + Stakeholders; + - EU + - partners + - Python communities etc.etc + + + Both the project and the development process are based around critical workshops, so called + "sprints" that will take place on a six week cycle throughout the project (24 months). Around + these sprints input and output to stakeholders will be structured. The arrows above symbolize + the evaluation-feedback-change system that will be implemented. + + + +This method will affect the role of the project management, management structure, role of +coordinator, project meetings, quality control and communication in the project in what we +have experienced to be a very constructive way. +Our reasons for choosing this development and projectmethod are several: +?This project has a history of 6 months in which the team succesfully implemented sprints + and agile development methods +?In this project, teammembers from 5 (?) different countries will work continuosly in separate + places, sprints will be the main forum in which the teammembers meet up and work + together in real life +?The sprints will be open for nonteammembers to participate in the development process, thus + allowing for an open and feedbackdriven process +?The sprints will be the forum in which knowledge will be shared and the transparancy within + the project organisation will be measured + +We will during the project focus on evaluating and documenting our projectmethod and share +knowledge and experience in that area as well. It is our goal that the overall deliverables from +this project will be a functioning PyPy as well as an effective projectmethod for agile +development/Open Source projects. + +On the following pages we will describe in more detail how this choice of method will +influence the way this project will be managed. + + +B 5.1 Project manager + +The PyPy project will have a project management structure that is based upon two resources, +Jacob Hall?n as project manager and Beatrice D?ring as assisting project manager. + +The role of the project manager is to: + manage the project and its scope of time, budget and deliverables + lead the work of the management board and report to the management board + execute decisions made in the management board + report to the project coordinator + support the project coordinator concerning the relations to the EU + manage the sprints + manage routines for quality assurance of the technical development + +The role of the assistant project manager + report to the project manager + participate in reports to management board and project coordinator + manage project administration (reports, documentation,etc) + manage routines for sprints, quality assurance of project process, resourceallocation + manage contact with external partners + manage the day-to-day operations of the project (ex. executing decisions made by + management board) + manage the knowledge process and actively spread information to the Open Source + community regarding methods used + +The reasons for having a structure based on a project manager and assisting project manager +are: + + + + both the development and the project process will recieve due attention in that the persons + chosen have expert skills in these different areas + the project will not be exposed to the risk that a single project manager would mean + (hhmm d?ligt ? formulera om) + a project of this size with team and stakeholders distributed in several countries needs more + project management resources + +The skills and experience of the combined project management team are as followed: + +Large scale projects: + +Jacob Hall?n have been working since 1994 with large scale development projects. He was a +consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden +(http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being +systems architect for the national bibliography system and interlibrary loan system. +Participated in international standardisation groups for search systems (Z39.50) and +interlibrary loans. + +He was also the initiator of the international standardisation effort for library services +information. Participated as the Royal Library representative in ONE-2, an EU funded project +under the Telematics for Libraries project (http://www.one-2.org) + +Since 2000, Jacob have been involved in co-founding AB Strakt (http://www.strakt.com), a +company developing workflow and document handling systems. There he works in roles as +developer, project manager, CTO and CEO. The company has grown from 3 employees to +having 12 full time employees and 6 part time employees so far. + +Connected to his work at AB Strakt, Jacob has also been active as co-founder and chairman of +the Python Business Forum, an international trade organisation for companies that use Python +as their main tool of business. The PBF has approximately 50 member organisations. +He is also the project leader for the Europython 2004 conference, to be held in +G?teborg, Sweden 9-11 June 2004. + +Beatrice D?ring have experience in large scale education projects involving working with +consortiums of three companies servicing a stakeholdergroup of about 30 recruiting +companies. These large education projects was part of a national program to solve shortages +of skilled IT-personel during the years 1998- 2000. 200 students participated in the projects +and the projects met their deliverables in that over 80% of the student were employed after the +education. The project team consisted of 7 persons working full time. As a project manager, +Beatrice was responsible for meeting project goals, meeting profit margins, leading the team +and creating strategies for stakeholder participation in the projects. She was also responsible +for reporting and documenting the project to the client. + +Since 2000 she has been involved in similar assigments, one recently finished for University +of Blekinge in which the education was directed towards recruiting companies in the +gamedevelopment industry. She has also worked as project manager for several development +projects during the time 1998-2002. + + + +She has also developed project methods for the companies and teams shes been working with +and have also been working with quality assurance of development projects. Her current +company, Change Maker is also working with supporting smaller companies in the +application process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience of +working with similar EU-funded projects since 1997. + +Financial tracking in projects: + +Jacob Hall?n has a widespread experience of founding and managing companies as well as +being project manager for large scale projects. This means that + +The large scale education projects that Beatrice managed had a profitmargin of 20% which +was met. The total budget for these projects was 20 million SEK. She has also recently been +involved in the prestudy, budgeting and start of a 6 year long education project in Arvika, +Sweden with a total budget of 18 million SEK. + +During her time as a manager for the education and consultdepartment in NetGuide +Scandinavia (1999-2002) she had budget and resultresponsibility. + +Leadership skills: + +Jacob Hall?n have experienced leadership challenges in different situations. Since + +Beatrice D?ring have experience from leadership situations in projects as well as in +lineorganisations since 1998. During four years she was a part of a management team of five +people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, +motivating and developing her personel. + +Beatrice employs strategies of empowerment, active listening combined with creating and +maintaining an open communication climate based on honesty and trust the achieve goals +together with her team. Beatrice have been teaching management oriented courses +(leadership, project management, communication, conflictresolving) for Learning Tree +International since 2003 in both Sweden and USA. + + +B 5.2 Management structure + +B 5.3 Coordinator ? dont write + +B 5.4 Project meetings + +Project Meetings + +Management Board will meet at the start of the project and two times per year or on an ad hoc +basis as requested. The meetings will normally be scheduled to rotate between countries of the +EU and mainly the principal contractors home base. The project manager is responsible for +the invite and agenda as well as managing the meetings. Objectives on these meeting are +tracking progress regarding workpackages, budget, timescale and strategies for involving + + +stakeholders as in partners or new partners. Agenda and discussions/decisions on these +meeting will be documented and put up in the internal project web. + +Team Meetings + +The project team will meet at the "sprints" which take place on a six week cycle ( se below). +During the sprints, there will be time allotted to discuss and evaluate the project process, track +progress, discuss resource allocation, new teammembers. The project manager is responsible +for the invite and agenda as well as managing the meetings.Agenda and discussions/decisions +on these meeting will be documented and put up in the internal project web. + +Project review workshops ("learning loops") + +Every six months, as preparation for the Management Board meetings and project reviews +from the EU project office, the project management team invites the team to an evaluation +workshop, lasting for a day, in which product as well as process is being reviewed. +Riskassessment is also an important part of this workshop. This meeting could result in +proposed changes that will then be reported to the Management Board for decision. +The project manager is responsible for the invite and agenda as well as managing the +meetings.Agenda and discussions/decisions on these meeting will be documented and put up +in the internal project web. + + +"Sprint" Meetings are the key to PyPy's technical development + +Key to PyPy's technical development and research are so called "sprints". These publically +announced one-week meetings serve as an intense working forum to rapidly discuss and +implement key PyPy ideas with agile methodologies. Developers usually pair up and write +unit-tests to test the to-be-implemented features before actually adding them. The unittest-first +approach helps to understand the planned feature. Additionally, the discussion in a pair makes +sure that obviously wrong pathes of development are avoided. If something seems too hard to +test or to pin down explicitely this is taken as an indication of an underlying design problem. + +Note that more traditional approaches usually follow a model where developers work alone +and only meet to talk. Instead with sprint-driven development talking and actually +implementing resulting ideas ensures a more focused approach with fast feedback cycles. +While the free software community is successful especially because of it's open +communication model sprints are an accelerator to this process. While coding in pairs +developers educate each other which leads to a broader common understanding of the project. +During a sprint multiple pairs want to work in parallel which adds pressure on design +decisions so that independent development of components of the system is possible. Thus +sprints not only deepen the communication and understanding among researchers and +developers but they imply a working process which enhances the software design in multiple +ways. The project manager is responsible for the invite (stated goal) and agenda as well as +processmanagement during the sprints. Agenda and discussions/decisions on these sprints will +be documented and put up in the internal project web. + +With a very-high-level-language like Python rapid development in coding-sprints becomes +especially effective. A VHLL-language generally allows to focus on ideas rather than on low- +level language details. In combintation with pervasive test-driven development this eases + + +high-quality rapid evolution towards the intendent goals. Obviously, the PyPy developers are +very experienced with Python and bigger applications in general. Thus the full potential of +agile methodologies is unvealed during PyPy sprints. In less than five weeks worth of +development (during four sprints) the group produced a working prototype which is a big +success not only in the eyes of its developers. + +Technical decisions + +Major design or technical decisions are usually reached through consensus during the sprints. +If a conflict cannot be resolved there then the technical board gets the final say. The members +of the technical board are appointed by a vote of everyone who has commit rights to the +source repository. However, it is expected that design and implementation choices will +usually be determined by consensual agreement or by informal votes on the development +mailing list. This is common practice within the Python and many others free softare +communities. Also, the PyPy developers and researchers will construct few if any formal +hierarchies between them. Constantly working together with agile methodologies and the +visilibity of each individual contribution help enforce high-quality program code and good +design decisions. + +B 5.5 Quality control of technical development +The PyPy project will ensure quality by a variety of means. On the grand scale, the +involvement of excellent researchers ensures that the general direction takes care of latest +insights in language research. Moreover, we will publish our research results on conferences +and to scientific and free software communities. This forms the basis to maintain a high- +quality general technical direction. + +The developers deploy agile methodologies like unittest-driven development and pair- +programming. By the end of the project we expect to have produced more than 3000 unittests +testing every aspect of the runtime system. The presence of such tests also allows to rapidly +change parts of the implementation without fear of breaking functionality elsewhere. We also +plan to release our runtime system often and thus gather additional feedback from early +adopters, developers and researchers. + +To support the open development we base all of our documents, source code and website +information on a version control system. In combintation with a notification on all changes +this ensures that all interested parties can review and react to developments. + +The PyPy developers have produced a working prototype within four one-week sprints and a +little development in between. The code and design quality of the project is already widely +accepted. There are now 400 unittests. As a consequence, Guido van Rossum, the inventor +and maintainer of today's Python, listed is as the number one project he would like to succeed. +He previously attended one of our sprints and got deeply involved with our architecture and +source code which he immediately found intuitive to work with. +Thus we believe that our choices for technical quality management are fit to meet highest +standards. + +Additional Quality procedures + + + +The project manager will circulate a draft Quality Management plan for the project prior to +first Project Meeting and and then present it for approval at the first Meeting. It should +complement the prescribed quality approach with respect to the following aspects: + + Document procedures, standards and control + Issue control for documents + Reporting procedures, frequency and format + Communication procedures + Corrective actions + Exception control + Conflict resolution + Meeting draft agenda + Format of meeting minutes + Tracking system for actions + Risk assessment + Evaluation routines + Specific responsibilities within the project + + +B 5.6 Communication and reporting + +The project process will be reported as follows: + monthly written status reports to the Management Board/Technical Board by the project + management team. These reports will be posted on the internal project web for the entire + team to access. + project review report to the EU project office. These reports are the result of the project + review workshops (every 6th month) and are produced by the project management team. + These reports will be posted on the internal project web for the entire team to access. + Project evaluation report. At the end of the project, an evaluation report will be produced in + which both product, process and deliverables will be evaluated. This report will be + presented to stakeholders (consortium companies and partners) and the EU project office. + +The technical development of PyPy is driven by open continous discussion. Many of the +involved decisions are made and verified during one-week working meetings, so called +"sprints". Members from the larger Python software community are publicly invited and have +the chance to interact and work with the PyPy developers or become one themselves. +Mailing lists, chat-sessions, Wikis and notification of program changes provide a constant +flow of information between PyPy project members and the wider community. Additionally, +groups of developers can start interactive "screen" sessions which allows sharing their +workspace and implement and communicate efficiently. Therefore conflicts out of missing or +conflicting information or due to misunderstandings will be minimized. + +Each sprint meeting is planned for by all developers. The sprint goals are usually agreed upon +before the meeting starts. This is also important to allow new developers or contributors to +join specific efforts. Sprint results are subsequently published to email and web-channels to +gather feedback and educate others about changes. + +We will present multiple reports and scientific papers on major conferences such as +EuroPython (Python's european community conference), OSCON (Open Source Convention), +PyCon (python developer conference) and to domain specific audiences such as embedded + + +device developers.In a later phase of the project the PEP (Python Enhancement Proposals) +procedures may be implemented. This is the standard procedure for applying changes to the +C-implementation of Python as of today. It forces an author to clearly state the benefits of the +proposed Enhancement and provides an rationale. However, such a formal method will only +by required when the project reaches the point where users begin to rely on aspects of our +implementation. + + +B 5.7 Consortium ? dont write + +B 5.8 Ip ? dont write + + From pedronis at codespeak.net Fri Oct 10 13:37:02 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 10 Oct 2003 13:37:02 +0200 (MEST) Subject: [pypy-svn] rev 1658 - pypy/trunk/doc/funding Message-ID: <20031010113702.C34FA5A40B@thoth.codespeak.net> Author: pedronis Date: Fri Oct 10 13:37:01 2003 New Revision: 1658 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: removed boilerplate & :DELETE: enclosed unused text. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Fri Oct 10 13:37:01 2003 @@ -1,29 +1,7 @@ -:DELETE:BEGIN - -B.1 Scientific and technological objectives of the project and state of the art -=============================================================================== - -""" - In the event of inconsistency between information given in - Part A and that given in Part B, the Part A version will prevail - -Describe in detail the proposed project's Scientific & Technical objectives. -The objectives should be those achievable within the project, not through -subsequent development, and should be stated in a measurable and -verifiable form. The progress of the project work will be measured -against these goals in later reviews and assessments. Describe the -state-of-the-art in the area concerned and how the proposed project -will enhance the state-of-the-art in that area. - -(Recommended length ? three pages) -""" - -:DELETE:END - - Scientific and technological objectives of the project & state of the art =============================================================================== + Problem to be solved --------------------------- @@ -64,6 +42,7 @@ the same time developing on top of a custom but standardised language offering both productivity and performance. + Quantified specific objective ----------------------------------- @@ -99,70 +78,6 @@ C-implementation. We expect algorithmic code to run at least at 50% of the speed of pure, optimized C code. -:DELETE:BEGIN - -For dynamic languages, for which whole-program static compilation is -not suitable, (bytecode) interpretation is a common implementation -technique, especially for today widely used open-source languages like -Python, because of portability requirements and at least initial -simplicity. - -But the resulting monolithic (C) codebase is inflexible and limited -speed-wise by interpretation overhead. - - -User pressure tends to shape interpreters towards performance at the -expense of other aspects (simplicity, flexibility again), possibly -culminating with the introduction of a native JIT, adding a -significant amount of code and complexity and further impairing the -flexibility. [S03]_ - -Taylorability is armed, e.g. subsetting and adaptation for small -memory footprint and small devices, while today's applications are to -be developed for an increasing variety of devices and environments, -further if non-C platforms (JVM, .NET) are to be supported by the -language a new codebase/interpreter written from scratch is required -(like Jython). - -Moreover, conflicting with performance and manageable complexity, -there is a large number of aspects and features that users would like -to see integrated in the interpreter (or would even do so themselves, -if it were possible at all). These features can be implemented as -libraries, but would benefit a lot from direct support from the -language implementation (FIXME is this important here?: -- which they -generally only have in a couple of experimental languages.) Some -examples: - -* distributed/parallel execution (SMP or Networked) -* orthogonal persistency -* pervasive security support (FIXME) -* logic programming, -* aspect-oriented programming - -!!! reuse some of this: DONE! - -Our goal is to attack both the performance and flexibility problems at -the same time, by reimplementing/capturing the semantics of Python in -itself (a subset thereof), central to this is the concept of Object -Space, which captures in a OO-manner at the level of the interpreter -the semantics of individual operations between objects. The resulting -codebase is to be translated to C (or potentially non-C targets) -weawing in aspects like memory management, object layout, etc. - -In a second phase we expect to synthetize from the codebase a -specializing compiler (based on dynamic partial evaluation). - -Further we plan to reuse this framework to add desiderable orthogonal -features and extensions to the language (FIXME list of concrete things -from WPs). - -FIXME XXX: maybe refer to early Kiczales paper on AOP which was more about -appl. specific code generation and component languages (in our case -that would be RPython, and translation is a weaver) and whose spirit -is very much matched by PyPy approach. - -:DELETE:END - Current State of The Art ------------------------------ @@ -295,291 +210,6 @@ way from choices about aspects and predefined or user-supplied extensions. -:DELETE:BEGIN - -Introduction ------------- - -Interpretation is a common implementation technique for a wide range of -programming languages whose primary objective is not efficiency. -Interpreters are well-suited for small-to-medium languages, favouring a -simple and clear engine. XXX aren't there "large" interpreted languages? -XXX what is a large language? example? - -XXX armin et.al..: isn't the key in the following para that today's language design is -"monolithic" and not configurable, i.e. all bigger programming languages are not -designed in a modular way and thus give the user no choice which components/aspects -they want to use for their target application? But that today's applications -are to be developed for an increasing variety of devices and environments (Big-Iron, cars, -watches, mobile phones, banks, whatever). What about a security-goal btw? - -XXX nico: modularity in langage is a very interesting feature. see below. - -As a language becomes popular, however, the costs inherent to this -approach are increasingly pointed out. These costs are twofold. Firstly, -no matter how much effort is made to optimize the core components, the -remaining interpretative overhead is large, both in term of processor -cycles and memory consumption. Secondly, interpreters are notoriously -difficult to factor into relatively independent components, which makes -structural changes to a large interpreter cumbersome. While the -efficiency costs are well-known, the costs inherent to the lack -flexibility [LHJ95]_ [H98]_ are often underestimated by the community of language -users. In practice, what often occurs for newly popular languages is -that the user base creates pressure about the efficiency issue and -motivates a group of developers to write a native Just In Time (JIT) -compiler, adding a significant amount of code and complexity and further -impairing the flexibility. [S03]_ - - -The Flexibility Goal --------------------- - -The flexibility problem is pernicious. It affects almost all aspects of -the language implementation: - -* user pressure tends to shape interpreters towards performance at the - expense of other aspects, like small footprints and code simplicity. - -* there are a lot of other trade-offs; experimenting with different - solutions can be close to impossible for aspects that affect the - interpreter globally. These aspects are usually frozen in early design - decisions (memory management, object model, multithreading,...). - -* optimisation drives the interpreter code base, an error-prone and - scope-limiting process. It is impossible to reuse the code base for - implementation on new, non-C platforms; you need to start from scratch. - -Moreover, conflicting with performance and manageable complexity, there -is a large number of aspects and features that users would like to see -integrated in the interpreter (or would even do so themselves, if it -were possible at all). These features are well-established as middleware -tools that can be accessed from common languages, but would benefit a -lot from direct support from the language implementation -- which they -generally only have in a couple of experimental languages. Some -examples: - -* distributed execution (SMP or Networked) -* persistency -* FIXME list our application-level goals here -* XXX nico: could talk about security, logic programming, aspect-oriented programming, etc. - -The first major goal of the PyPy project is to produce an interpreter -with flexibility in mind, and put this flexibility to good use. More -specifically, our objectives are: - -1. to create a implementation of the Python language in Python. - -2. to implement a subset of the above-mentioned features (FIXME which - ones?) as an immediately useful proof-of-concept. - -3. to allow third-parties to implement any other interpreter-level feature - more easily than they would in a traditional interpreter. - -The main building piece behind the proposed flexibility is -- besides -using a high-level language in the first place -- the concept of Object -Space, which captures at the level of the interpreter the semantics of -individual operations between objects. The interpreter's main dispatch -loop handles control flow and supporting data structures (frame stack, -bytecode objects...); each individual operation is dispatched to the -object space. Object spaces are pluggable, which means that we can very -easily replace an object space implementing the normal Python semantics -with another one doing different things, like accessing remote objects -over a network, keeping logs, measuring performance or doing persistence --- all things that are better implemented in the interpreter itself, so -that they can be fully transparent to the user of the language. - -More theoretically, replacing an object space with another one -performing abstract operations turns our interpreter into an abstract -interpreter at no effort. Such a use will be shown below. - - -The Performance Goal, Phase 1 ------------------------------ - -Flexibility is often associated with poor performances, although -theoretically, high-level languages are more expressive and thus are -open to a wider range of optimization than low-level languages, and -should then outperform them. Of course this trend is not exactly -confirmed in practice so far; the only examples that one could give are -derived from bad or buggy low-level algorithms being repeatedly -reimplemented in C programs while higher-level languages natively -provide the correct algorithms. - -Also note that languages can be static -or dynamic independently of being high or low-level: high-level -expressive languages can be static and efficient [OCAML] while -inexpressive ones can be dynamic and much less efficient [PROLOG]. - -The PyPy project -- phase one -- aims to write a Python interpreter -using Python itself as the implementation language for flexibility, with -the additional constraint that core parts should be written in a more -static subset of the language, a restriction that opens the door to -static analysis and translation to a low-level language like C. This -approach has already been taken, e.g. for the Scheme [K97]_ -and Squeak [IKM97]_ language, but we have an original approach -to the translation process that we will describe later. - -The net result will be an interpreter whose performance is comparable to -today's C-based implementation, but more flexible. The translation is -not a one-shot: the maintained source is the Python one. Moreover, -aspects that were design decisions in the current C Python are now -merely customizable behaviour of the translator. In other words, the -translator is not merely a restricted-Python-to-C translator; it is an -essential piece towards the flexibility goals of the previous section. -Aspects like memory layout of objects are not defined by the PyPy Python -source, but derived from it by the translator with the support of a -small run-time system written in C. It is thus expected that the -translator should be a highly configurable tool, with pluggable -components, that will allow us (and third-parties) to produce customised -C versions of PyPy with tailored trade-offs. Moreover, the exact set of -Python source that the translator will be applied to can be varied as -well, producing C versions with different capabilities. - -Thus, our objectives are: - -4. to produce several different C versions for different identified usages - of Python; - -5. to allow third-parties to produce customised C version easily; - -6. to adapt the translator to target other non-C platforms (Java and/or - .NET and/or other). - -Moreover, we will also consider targetting a virtual machine that -already has a high-performance JIT compiler, possibly Self (see below). - - -JIT compilers -------------- - -JIT compilers have been reasonably well studied; an account of their -history is given in [A03]_ . But actually writing a JIT for -a given language is generally a major task. Different techniques to ease -this path have been recently explored; let us cite: - -* to implement a dynamic language in a flexible way, it can be written - on top of another one, e.g. as a dynamic translator that produces - bytecodes for an existing virtual machine. If the virtual machine is - already equipped with state-of-the-art JIT compilation, it is possible - to leverage its benefits to the new language. This path is not only much - shorter than designing a complete custom JIT, but it is also easier to - maintain and evolve. This idea is explored for the Self virtual machine - in [WAU99]_ . - As pointed out in that paper, some source language features may not match - any of the target virtual machine features. When this issue araises, we - are left with the hard problem of refactoring an efficient JIT-based - virtual machine. - XXX state-of-the-art in Self: [HCU91]_ - [HU94]_ . - -* a completely different approach: making it easier to derive a JIT from - an existing C interpreter. DynamoRIO instrumentates the execution - of compiled programs and optimizes them dynamically. It has been - extended with specific support for interpreters. With minimal amounts of - changes in the source of an interpreter, it can significantly reduce the - processor-time interpretative overhead [S03]_ . While this offers a - highly competitive gain/effort ratio, performance does not reach the - levels of a hand-crafted JIT. - - -The Performance Goal, Phase 2 ------------------------------ - -Building upon phase 1, we aim to add a JIT compiler to PyPy. This will be -done using a different technique than described in the previous -paragraph: our goal is to *generate* the JIT compiler from the -high-level Python source of PyPy. - -This will be accomplished by integrating the technology developed in -Psyco [R03]_ , a prototype JIT for the Python programming language. -XXX [APJ03]_ -It is -more precisely a specializing JIT compiler based on abstract -interpretation. - -Although Psyco was hand-written, large parts have a one-to-one -correspondence to whole sections of the C Python interpreter. This is -uncommon for JITs, but Psyco's good results give ample proof-of-concept. -Moreover, this property can be explicitely related to the DynamoRIO -project cited above, which instrumentates the interpreter itself. -Indeed, the one-to-one correspondence between parts of C Python and -Psyco is as follows: to each expression in C Python corresponds a more -complex expression in Psyco, which does instrumentation and -optimisations. The difference with DynamoRIO is that the latter analyses -the machine code resulting from the compilation of the interpreter -at run-time. In Psyco, the one-to-one correspondance is with the C source -instead. It could certainly have been done by automated analysis of the -C source of C Python, but this is difficult and error-prone. - -In the PyPy project, on the other hand, the source code of the interpreter -will be written in Python instead of C. This is much easier to analyse -safely. Thus, the plan is to raise the level further and rely on yet -another customisation of the translator, to let it emit the complex -Psyco-style expressions instead of (or in addition to) the normal C -expressions that would be the direct translation. - -The last objective is thus: - -7. to provide a flexible Python interpreter running at JIT speed. - - -The Translator --------------- - -Finally, let us further demonstrate the -benefits of writing an interpreter flexibly in a high-level language. So -far, the translator sounds like a magic piece of difficult-to-write -software. This is not so for analysing pieces of Python source code is -not a very complex task. Some type inference is needed, but it can -be kept simple by suitably restricting the amount of allowed dynamism. - -XXX rewrite all this stuff - -However, instead of analysing source code, we propose another approach: -doing the type inference by abstract interpretation. This is -essentially the way Psyco works, albeit it does it at run-time. [FIXME: -has it already been done elsewhere?] [otherwise explain in a FOOTNOTE: -the essential idea is to "interpret" the Python source code that we want -to translate; all manipulated objects are abstracted into their type -only. Operations between two such "abstract objects" return a new -"abstract object", which represents the type of the result.] As we have -seen above, abstract interpretation is easily achieved by plugging a -custom object space into the PyPy code base. The translator can be built -as an extension of this "type inference" object space, emitting -translated code as a side-effect along the analysis. Thus the translator -is nothing more than PyPy itself with a custom object space: when you -use this special version of PyPy to "interpret" a Python function, it -becomes in fact translated... - -In summary, to translate PyPy itself to C, we will be using PyPy! - -:DELETE:END - -:DELETE:BEGIN - -XXX this chapter shoud **have the following structure** - -B.1.1 Problem to be solved - -It is also a good idea to clearly identify the problem to be solved - -B.1.2 Quantified specific objectives - -Try to quantify statements whereever made, especially technical targets. - -B.1.3 Current State of the Art - -Demonstrate awareness of the current state-of-the-art and differences between -this proposal and any similar existing or previous projects. - -B.1.4 Beyond the State of the Art - -Show the degree of originality, innovation and promise of progress beyond it. -Strike an appropriate balance in the level of risk associated with the project -compared to its potential benefits - high risk may be acceptable in return for -high benefits. Avoid very large or unacceptable levels of risk. - -:DELETE:END References: From pedronis at codespeak.net Fri Oct 10 13:40:56 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 10 Oct 2003 13:40:56 +0200 (MEST) Subject: [pypy-svn] rev 1659 - pypy/trunk/doc/funding Message-ID: <20031010114056.055755A253@thoth.codespeak.net> Author: pedronis Date: Fri Oct 10 13:40:56 2003 New Revision: 1659 Added: pypy/trunk/doc/funding/long_old_objectives.txt Log: extracted unused longer text for objectives. Added: pypy/trunk/doc/funding/long_old_objectives.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/long_old_objectives.txt Fri Oct 10 13:40:56 2003 @@ -0,0 +1,317 @@ +Introduction +------------ + +Interpretation is a common implementation technique for a wide range of +programming languages whose primary objective is not efficiency. +Interpreters are well-suited for small-to-medium languages, favouring a +simple and clear engine. XXX aren't there "large" interpreted languages? +XXX what is a large language? example? + +XXX armin et.al..: isn't the key in the following para that today's language design is +"monolithic" and not configurable, i.e. all bigger programming languages are not +designed in a modular way and thus give the user no choice which components/aspects +they want to use for their target application? But that today's applications +are to be developed for an increasing variety of devices and environments (Big-Iron, cars, +watches, mobile phones, banks, whatever). What about a security-goal btw? + +XXX nico: modularity in langage is a very interesting feature. see below. + +As a language becomes popular, however, the costs inherent to this +approach are increasingly pointed out. These costs are twofold. Firstly, +no matter how much effort is made to optimize the core components, the +remaining interpretative overhead is large, both in term of processor +cycles and memory consumption. Secondly, interpreters are notoriously +difficult to factor into relatively independent components, which makes +structural changes to a large interpreter cumbersome. While the +efficiency costs are well-known, the costs inherent to the lack +flexibility [LHJ95]_ [H98]_ are often underestimated by the community of language +users. In practice, what often occurs for newly popular languages is +that the user base creates pressure about the efficiency issue and +motivates a group of developers to write a native Just In Time (JIT) +compiler, adding a significant amount of code and complexity and further +impairing the flexibility. [S03]_ + + +The Flexibility Goal +-------------------- + +The flexibility problem is pernicious. It affects almost all aspects of +the language implementation: + +* user pressure tends to shape interpreters towards performance at the + expense of other aspects, like small footprints and code simplicity. + +* there are a lot of other trade-offs; experimenting with different + solutions can be close to impossible for aspects that affect the + interpreter globally. These aspects are usually frozen in early design + decisions (memory management, object model, multithreading,...). + +* optimisation drives the interpreter code base, an error-prone and + scope-limiting process. It is impossible to reuse the code base for + implementation on new, non-C platforms; you need to start from scratch. + +Moreover, conflicting with performance and manageable complexity, there +is a large number of aspects and features that users would like to see +integrated in the interpreter (or would even do so themselves, if it +were possible at all). These features are well-established as middleware +tools that can be accessed from common languages, but would benefit a +lot from direct support from the language implementation -- which they +generally only have in a couple of experimental languages. Some +examples: + +* distributed execution (SMP or Networked) +* persistency +* FIXME list our application-level goals here +* XXX nico: could talk about security, logic programming, aspect-oriented programming, etc. + +The first major goal of the PyPy project is to produce an interpreter +with flexibility in mind, and put this flexibility to good use. More +specifically, our objectives are: + +1. to create a implementation of the Python language in Python. + +2. to implement a subset of the above-mentioned features (FIXME which + ones?) as an immediately useful proof-of-concept. + +3. to allow third-parties to implement any other interpreter-level feature + more easily than they would in a traditional interpreter. + +The main building piece behind the proposed flexibility is -- besides +using a high-level language in the first place -- the concept of Object +Space, which captures at the level of the interpreter the semantics of +individual operations between objects. The interpreter's main dispatch +loop handles control flow and supporting data structures (frame stack, +bytecode objects...); each individual operation is dispatched to the +object space. Object spaces are pluggable, which means that we can very +easily replace an object space implementing the normal Python semantics +with another one doing different things, like accessing remote objects +over a network, keeping logs, measuring performance or doing persistence +-- all things that are better implemented in the interpreter itself, so +that they can be fully transparent to the user of the language. + +More theoretically, replacing an object space with another one +performing abstract operations turns our interpreter into an abstract +interpreter at no effort. Such a use will be shown below. + + +The Performance Goal, Phase 1 +----------------------------- + +Flexibility is often associated with poor performances, although +theoretically, high-level languages are more expressive and thus are +open to a wider range of optimization than low-level languages, and +should then outperform them. Of course this trend is not exactly +confirmed in practice so far; the only examples that one could give are +derived from bad or buggy low-level algorithms being repeatedly +reimplemented in C programs while higher-level languages natively +provide the correct algorithms. + +Also note that languages can be static +or dynamic independently of being high or low-level: high-level +expressive languages can be static and efficient [OCAML] while +inexpressive ones can be dynamic and much less efficient [PROLOG]. + +The PyPy project -- phase one -- aims to write a Python interpreter +using Python itself as the implementation language for flexibility, with +the additional constraint that core parts should be written in a more +static subset of the language, a restriction that opens the door to +static analysis and translation to a low-level language like C. This +approach has already been taken, e.g. for the Scheme [K97]_ +and Squeak [IKM97]_ language, but we have an original approach +to the translation process that we will describe later. + +The net result will be an interpreter whose performance is comparable to +today's C-based implementation, but more flexible. The translation is +not a one-shot: the maintained source is the Python one. Moreover, +aspects that were design decisions in the current C Python are now +merely customizable behaviour of the translator. In other words, the +translator is not merely a restricted-Python-to-C translator; it is an +essential piece towards the flexibility goals of the previous section. +Aspects like memory layout of objects are not defined by the PyPy Python +source, but derived from it by the translator with the support of a +small run-time system written in C. It is thus expected that the +translator should be a highly configurable tool, with pluggable +components, that will allow us (and third-parties) to produce customised +C versions of PyPy with tailored trade-offs. Moreover, the exact set of +Python source that the translator will be applied to can be varied as +well, producing C versions with different capabilities. + +Thus, our objectives are: + +4. to produce several different C versions for different identified usages + of Python; + +5. to allow third-parties to produce customised C version easily; + +6. to adapt the translator to target other non-C platforms (Java and/or + .NET and/or other). + +Moreover, we will also consider targetting a virtual machine that +already has a high-performance JIT compiler, possibly Self (see below). + + +JIT compilers +------------- + +JIT compilers have been reasonably well studied; an account of their +history is given in [A03]_ . But actually writing a JIT for +a given language is generally a major task. Different techniques to ease +this path have been recently explored; let us cite: + +* to implement a dynamic language in a flexible way, it can be written + on top of another one, e.g. as a dynamic translator that produces + bytecodes for an existing virtual machine. If the virtual machine is + already equipped with state-of-the-art JIT compilation, it is possible + to leverage its benefits to the new language. This path is not only much + shorter than designing a complete custom JIT, but it is also easier to + maintain and evolve. This idea is explored for the Self virtual machine + in [WAU99]_ . + As pointed out in that paper, some source language features may not match + any of the target virtual machine features. When this issue araises, we + are left with the hard problem of refactoring an efficient JIT-based + virtual machine. + XXX state-of-the-art in Self: [HCU91]_ + [HU94]_ . + +* a completely different approach: making it easier to derive a JIT from + an existing C interpreter. DynamoRIO instrumentates the execution + of compiled programs and optimizes them dynamically. It has been + extended with specific support for interpreters. With minimal amounts of + changes in the source of an interpreter, it can significantly reduce the + processor-time interpretative overhead [S03]_ . While this offers a + highly competitive gain/effort ratio, performance does not reach the + levels of a hand-crafted JIT. + + +The Performance Goal, Phase 2 +----------------------------- + +Building upon phase 1, we aim to add a JIT compiler to PyPy. This will be +done using a different technique than described in the previous +paragraph: our goal is to *generate* the JIT compiler from the +high-level Python source of PyPy. + +This will be accomplished by integrating the technology developed in +Psyco [R03]_ , a prototype JIT for the Python programming language. +XXX [APJ03]_ +It is +more precisely a specializing JIT compiler based on abstract +interpretation. + +Although Psyco was hand-written, large parts have a one-to-one +correspondence to whole sections of the C Python interpreter. This is +uncommon for JITs, but Psyco's good results give ample proof-of-concept. +Moreover, this property can be explicitely related to the DynamoRIO +project cited above, which instrumentates the interpreter itself. +Indeed, the one-to-one correspondence between parts of C Python and +Psyco is as follows: to each expression in C Python corresponds a more +complex expression in Psyco, which does instrumentation and +optimisations. The difference with DynamoRIO is that the latter analyses +the machine code resulting from the compilation of the interpreter +at run-time. In Psyco, the one-to-one correspondance is with the C source +instead. It could certainly have been done by automated analysis of the +C source of C Python, but this is difficult and error-prone. + +In the PyPy project, on the other hand, the source code of the interpreter +will be written in Python instead of C. This is much easier to analyse +safely. Thus, the plan is to raise the level further and rely on yet +another customisation of the translator, to let it emit the complex +Psyco-style expressions instead of (or in addition to) the normal C +expressions that would be the direct translation. + +The last objective is thus: + +7. to provide a flexible Python interpreter running at JIT speed. + + +The Translator +-------------- + +Finally, let us further demonstrate the +benefits of writing an interpreter flexibly in a high-level language. So +far, the translator sounds like a magic piece of difficult-to-write +software. This is not so for analysing pieces of Python source code is +not a very complex task. Some type inference is needed, but it can +be kept simple by suitably restricting the amount of allowed dynamism. + +XXX rewrite all this stuff + +However, instead of analysing source code, we propose another approach: +doing the type inference by abstract interpretation. This is +essentially the way Psyco works, albeit it does it at run-time. [FIXME: +has it already been done elsewhere?] [otherwise explain in a FOOTNOTE: +the essential idea is to "interpret" the Python source code that we want +to translate; all manipulated objects are abstracted into their type +only. Operations between two such "abstract objects" return a new +"abstract object", which represents the type of the result.] As we have +seen above, abstract interpretation is easily achieved by plugging a +custom object space into the PyPy code base. The translator can be built +as an extension of this "type inference" object space, emitting +translated code as a side-effect along the analysis. Thus the translator +is nothing more than PyPy itself with a custom object space: when you +use this special version of PyPy to "interpret" a Python function, it +becomes in fact translated... + +In summary, to translate PyPy itself to C, we will be using PyPy! + +References: + +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. + http://www.ai.mit.edu/~gregs/dynamorio.html +.. file = ivme03.pdf + +.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers + and Modular Interpreters". 22nd ACM Symposium on Principles of Programming + Languages (POPL'95). January 1995. + http://java.sun.com/people/sl/papers/popl95.ps.gz +.. file = popl95.ps.gz + +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. + http://haskell.org/frp/dsl.ps +.. file = dsl.ps.gz + +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. + http://citeseer.nj.nec.com/kelsey97prescheme.html +.. file = kelsey97prescheme.pdf + +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html +.. file = OOPSLA.Squeak.htm + +.. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. +.. file = jit-history.pdf + +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, + "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop + on Simplicity, Performance and Portability in Virtual Machine Design, + OOPSLA '99, Denver, CO, Nov 2, 1999. + http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf +.. file = oopsla-vm-wkshp.pdf + +.. [R03] Armin Rigo, http://psyco.sourceforge.net +.. file = psycoguide.ps.gz + +.. [APJ03] John Aycock and David Pereira and Georges Jodoin, + "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. + http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf +.. file = ucpy-reverse-engineering-python.pdf + +.. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, + "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic + Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published + as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, + Berlin, 1991. + http://self.sunlabs.com/papers/ecoop91.ps.Z +.. file = hlzle91optimizing.ps.gz + +.. [HU94] Urs H?lzle, David Ungar, + "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", + PLDI '94 and OOPSLA '94 + http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf +.. file = reconciling-responsiveness-with-performance.pdf + +.. [KLM97] Gregor Kiczales and John Lamping and + Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc + Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 + http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf +.. file = kiczales97aspectoriented.pdf \ No newline at end of file From pedronis at codespeak.net Fri Oct 10 14:03:02 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 10 Oct 2003 14:03:02 +0200 (MEST) Subject: [pypy-svn] rev 1660 - pypy/trunk/doc/funding Message-ID: <20031010120302.C5D385A253@thoth.codespeak.net> Author: pedronis Date: Fri Oct 10 14:03:01 2003 New Revision: 1660 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: reedit of B1 Problem to be Solved, major points: 1) I swapped 2 paragraphs 2) I have changed: """ The architecture of current interpreter implementations, on the other hand, is generally focused on performance issues. """ into """ The architectures of current interpreter implementations are a compromise between initial simplicity, Unix-style portability and performance in a single code base. """ 1) it's me bothering about our first reference to "interpreters" in the old version being dangling/unclear. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Fri Oct 10 14:03:01 2003 @@ -6,41 +6,42 @@ --------------------------- Current language implementations are static and hard to modify by -users. Even the open-source languages are designed in a non-flexible -way by a small group of developers. While designing a good programming -language is no easy task often application developers seek more -support and configurability of their language. This is especially -the case for the rising number of specialized runtime environments -where small memory footprints, concurrency or realtime features -are essential. - -The architecture of current interpreter implementations, on the other -hand, is generally focused on performance issues. The resulting -monolithic (C) code base is inflexible and expensive to maintain. Early -design decisions concerning aspects such as memory management, object -model and layout, security, multi-threading model are deeply tangled in -the code and cannot be reverted, experimented with or adapted to -specific runtime environments. - -Very-high-level languages (VHLL) offer a highly productive development -environment. However, whole-program static compilation is often not -suitable, so that VHLL are usually implemented by introducing a bytecode -and interpretation level, resulting in a loss of performance. This is -in contrast to lower-level languages such as C, which offer performance -but greatly decrease productivity. - -Thus user pressure tends to shape interpreters towards performance at -the expense of other aspects (simplicity, flexibility), possibly -culminating with the introduction of a native JIT, adding a significant -amount of code and complexity and further impairing the +users. Even the implementations of open-source dynamic languages have +non-flexible designs crafted by a small group of developers. While +designing a good programming language is no easy task often +application developers seek more support and configurability of their +language. This is especially the case for the rising number of +specialized runtime environments where small memory footprints, +concurrency or realtime features are essential. + +Very-high-level languages (VHLL) offer a highly productive development +tool. However, whole-program static compilation is often not +suitable, so that VHLL are usually implemented by introducing a +bytecode and interpretation level, resulting in a loss of performance. +This is in contrast to lower-level languages such as C, which offer +performance but greatly decrease productivity. + +The architectures of current interpreter implementations are a +compromise between initial simplicity, Unix-style portability and +performance in a single code base. The resulting monolithic (C) code +bases are inflexible and expensive to evolve. Early design decisions +concerning aspects such as memory management, object model and layout, +security, multi-threading model are deeply tangled in the code and +cannot be reverted, experimented with or adapted to specific runtime +environments. + +In the long run, user pressure tends to shape interpreters towards +performance at the expense of other aspects (simplicity, flexibility), +possibly culminating with the introduction of a native JIT, adding a +significant amount of code and complexity and further impairing the flexibility. [S03]_ -Subsequently, application developers are often left with bad choices not -only for productivity versus performance, but they have to work around -the hard-wired characteristics built into the languages. Instead they -would like to adapt and configure a VHLL to suit their needs while at -the same time developing on top of a custom but standardised language -offering both productivity and performance. +Consequently, application developers are often left with bad choices +not only for productivity versus performance, but they have to work +around the hard-wired characteristics built into the +languages. Instead they would like to adapt and configure a VHLL to +suit their needs while at the same time developing on top of a custom +but standardised language offering both productivity and performance. Quantified specific objective From hpk at codespeak.net Fri Oct 10 14:23:23 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 10 Oct 2003 14:23:23 +0200 (MEST) Subject: [pypy-svn] rev 1661 - pypy/trunk/doc/funding Message-ID: <20031010122323.B10B15A253@thoth.codespeak.net> Author: hpk Date: Fri Oct 10 14:23:22 2003 New Revision: 1661 Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Log: added a lot of tasks (still missing a few). i think this workpackage should be renamed "infrastructure". wasn't it at some point? it may sound like a big workpackage but it really means reusing alrady existing opensource/free tools IMO. we might want to subcontract someone here for doing a stylish design. Then subcontracting has some disadvantages so i don't know. maybe not so important right now to discuss this. Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Fri Oct 10 14:23:22 2003 @@ -22,34 +22,56 @@ **Objectives** -Supporting the PyPy project by maintaining and enhancing the tools. +Supporting the PyPy project by producing and enhancing the tools. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -- Keep the infrastructure up-to-date and develop it further. +Support the development process with reusing existing or developing +new debugging opensource tools. - - maintain the Subversion package and track its ongoing development - - - maintain the Subversion repository - - - build extensions for automatic document extraction - - - support email notification via mailing lists +- maintain the Subversion repository including notification + hooks and pre/post-commit restrictions. + +- provide access over http/https and sshserver + +- build extensions for automatic document extraction + +- maintain/setup mailing lists + +- implement a search facility over all content + +- maintain/extend issuetracker -- Provide a mirror repository which is kept up-to-date and which - can be used in case of failure of the main repository. +- maintain and enhance website + +- perform backups for all relevant information/code + +- setup a mirror repository which is kept up-to-date and which + can be used readonly in case of failure of the main repository. - Take care of regular repository backups. Design a strict backup policy suitable for the project, and adhere to it. +- help with automated testing + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +- configuring, installation of all development tools + (subversion, apache2, mailman, backup, roundup, ...) + +- http-server to present runtime/introspection information + aiding debugging and understanding of PyPy internals + +- several website revisions + +- automated (unit-)testing framework with html/pdf reports + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From lac at codespeak.net Fri Oct 10 14:34:40 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 14:34:40 +0200 (MEST) Subject: [pypy-svn] rev 1662 - pypy/trunk/doc/funding Message-ID: <20031010123440.06F4D5A253@thoth.codespeak.net> Author: lac Date: Fri Oct 10 14:34:40 2003 New Revision: 1662 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: add reminder Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Fri Oct 10 14:34:40 2003 @@ -37,6 +37,7 @@ of FIXME WHAT IS THE JABBER -- SIGNIFICANT PYTHON is poised to take advantage of this new development. +FIXME_LAURA FIXME_BEA ADD COMMUNICATION STRATEGIC OBJ **Proposal abstract:** :DELETE:BEGIN From lac at codespeak.net Fri Oct 10 14:41:39 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 14:41:39 +0200 (MEST) Subject: [pypy-svn] rev 1663 - pypy/trunk/doc/funding Message-ID: <20031010124139.361A75A253@thoth.codespeak.net> Author: lac Date: Fri Oct 10 14:41:38 2003 New Revision: 1663 Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Log: this needs to be the SWOT stuff. What is here belongs in B3. Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- pypy/trunk/doc/funding/B2.0.0_new_relevance.txt (original) +++ pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Fri Oct 10 14:41:38 2003 @@ -1,45 +1,10 @@ +FIXME_LAURA: proof-read this, insert new direction SWOT job :DELETE:BEGIN - -B.2 Relevance to the objectives of the IST Priority - -Describe the manner in which the proposed project's goals address the -scientific, technical, wider societal and policy objectives of the IST -Priority in the areas concerned. (Recommended length ? three pages) - -Information for this section comes from several main sources - - - - 1. Each Workprogram and the Commission specific program documents - identify and address the policy needs to a certain extent. - The introductory sections of the Workprogram for IST 2003/4 - contains good reference material. - -http://www.cordis.lu/ist/istag-reports.htm - - 2. Via the Europa web site, http://europa.eu.int there is - information on all EU policies and they can be identified and - downloaded from there. For example we have the following ? - Policies - Access by subject to legal instruments in force, - legislative activity in progress, implementation of common - policies, EU grants and loans, statistics and publications. - - - 3. There is also good material under eEurope initiatives and at - the ISPO (information Society Project Office) site. - - -You must also address where appropriate ERA related issues such as -relationships to any Eureka activities, (such as commonality of partners) -or relationships to national research programs. - --------------------------------------- - -:DELETE:END - FIXME_LAURA: proof-read this Relevance to the Objectives of the IST Priority -------------------------------------------------- + The PyPy project will build a flexible, modular, context-aware implementation of the Open Source programming language Python. In doing so it will take advantage of the known European strengths in @@ -56,19 +21,12 @@ explicit goals of making it more suitable for European industry can only have a positive effect on European competitiveness. -Since Python is widely used as a 'first programming language' and has -been very successful as a language to be taught to non-programmers, -particularily women, increasing the demand for Python in the IT -marketplace in general can also have a limited effect in promoting -social cohesion and gender equality. (See section 7 where this is -expanded at great length). - Because PyPy will be released as Open Source, it will contribute towards the goals of openness and trust. Python is the most -widely used European-designed computer language, (its development +widely used European-designed computer language. Its development started in 1990, at CWI, Centrum voor Wiskunde en Informatica, the National Research Institute for Mathematics and Computer Science in -the Netherlands) it will strenghten our leadership in the area of +the Netherlands, it will strenghten our leadership in the area of innovative language design, and increase world-wide awareness of this fact. @@ -78,81 +36,121 @@ European businesses and industry and to contributing to the greater well-being of all European citizens. -:DELETE:BEGIN -2.1 Relevance to the IST Workprogramme + +:DELETE:END + +Relevance to the IST Workprogramme +++++++++++++++++++++++++++++++++++++++ The IST thematic priority will contribute directly to realising European policies for the knowledge society as agreed at the Lisbon Council of 2000, the Stockholm Council of 2001, the Seville Council of 2002, and as reflected in the e-Europe Action Plan. -The main targets of IST in FP6 are + The main targets of IST in FP6 are - solving 'trust and confidence' problems so as to improve dependability of technologies, infrastructures and applications. -:DELETE:END - -Relevance to the IST Workprogramme -++++++++++++++++++++++++++++++++++++++ - PyPy can contribute to this goal because it is an Open Source language. Open Source programs are more widely trusted than proprietary alternatives because they are transparent. Any person having any doubts or questions about the technology can simply read the code and find out what it does, unlike with a closed-source -language where one can only hope. Moreover, Python is an extremely -readable language. Readability was one of its design goals. This -makes maintaining Python programs substatially easier than similar -program in less readable languages. It is the maintainability of -computer programs which most directly effects their actual and -perceived reliability. +language where one can only hope it does what you want. Moreover, +Python is an extremely readable language. Readability was one of its +design goals. This makes maintaining Python programs substatially +easier than similar program in less readable languages. It is the +maintainability of computer programs which most directly effects their +actual and perceived reliability. + +Moreover, there is a significant risk in relying on proprietary +closed source programs. Should one have any problem with the program, +you are completely dependent upon the programs manufacturer to fix +it. But the manufacturer will only fix it if it is in his commercial +interest to do so. The authors of this proposal who live in Sweden +are extremely tired of using software which believes that one can +live without the last three letters of the Swedish alphabet :XXX. +When the source is freely available, then should the manufacturer +not believe your problems to be worth his while, you can always +change things yourself, or hire somebody else to do so. Thus rather +than 'trusting the manufacturer because you have no choice' you +can 'trust yourself to always be able to fix it should it go wrong'. +This second form of trust is far more durable and useful. - strengthening social cohesion by providing efficient, intelligent and easy to use systems. -A primary design goal of Python was to be easier for non-programmers -and non-technical people to learn. If the devices of the future were -programmed in Python, even if they were done so simply for reasons of -economic competitiveness, there could be greater participation by all -memebers of society simply because there is less of a language -barrier. +Social cohesion is strengthened when technological advances are no +longer the exclusive domain of a technological elite, but readily +accessible by all members of society. The best way to achieve such a +goal is to have the participation of all members of society in the +design and implementation of new technological advances. They will +prevent our future devices from arriving with user interfaces that +present a 'nerds only' barrier. In the field of software, this means +more than simply providing programs which are easy to use -- it +also means providing languages which are easier for non-programmers +to learn. + +Python's development started in 1990, at Centrum voor Wiskunde en +Informatica (CWI), the National Research Institute for Mathematics and +Computer Science in the Netherlands. It built on the lessons learned +in designing ABC. Both of these languages are explicitly designed to +be easier for non-programmers and non-technical people to learn. Python +has been extremely successful in such goals, see XXX CP4E, especially +among women. Python is widely used as a first programming language. +We will explore this further in section 7, but for here suffice it +to say that Python meets such goals as much as is possible for a +computer language. + +Again, the simple benefit of being able to type your name correctly, +when it contains letters outside of the English 26, provides a sense +of belonging -- or perhaps it is only that when you cannot type your +name you feel excluded, unappreciated, or unwanted. - enabling sustainable growth and improving competitiveness both of large and small businesses as well as the efficiency and transparency of governments. -Firstly, governments have been embracing Open Source in recent times -in a big way. To the extent that they will demand programs developed -in an Open Source Language, for reasons of transparency, reliability, -and national security they will benefit from the existence of PyPy as -an Open Source language choice. Secondly, a driving force in this -proposal is the Swedish SME AB Strakt, whose new product, *CAPS -Upphandling*, is a full-featured, transparent, government procurement -system promoting the efficiency of government throughout the tender -process. AB Strakt is interested in PyPy in large part because it -will improve its commercial government offering. Thirdly, the PyPy -Consortium includes the Python Business Forum, an international trade -association of SMEs who develop using the Python programming language. -Since SMEs are the main engines for innovation, growth, and -competitiveness in the IT sector, by supporting these SMEs, and -improving the language they use to develop one can directly have a -positive effect on competitiveness. Moreover, syngeries can be -developed between the SMEs and academia, and SME and the -large industrial players whom we haven't signed on board yet, sigh. +Governments have been embracing Open Source in recent times in a big +way. To the extent that they will demand programs developed in an +Open Source Language, for reasons of transparency, reliability, and +national security they will benefit from the existence of PyPy as an +Open Source language choice. + +Moreover, the PyPy Consortium includes the Python Business Forum, an +international trade association of SMEs who develop using the Python +programming language. Since SMEs are the main engines for innovation, +growth, and competitiveness in the IT sector, by supporting these +SMEs, and improving the language they use to develop one can directly +have a positive effect on competitiveness. Moreover, syngeries can be +developed between the SMEs and academia, and SME and large industrial +players. Disseminating knowledge to these SMEs is a primary goal of +this proposal, and a major focus of our efforts. They are poised to +fully exploit the new language implementation because they will be +among its developers, and beneficiaries of a focussed effort in +knowledge dissemination. + +Thirdly, a Consortium member in this proposal is the Swedish SME AB +Strakt, whose new product, *CAPS Upphandling*, is a full-featured, +transparent, government procurement system promoting the efficiency of +government throughout the tender process. AB Strakt is interested in +PyPy in large part because it will improve its commercial offering. +The governments and large businesses which are its primary market will +thus benefit indirectly from an improved Python. - harnessing the computing and knowledge management resources across Europe and bringing them to the desktop of any researcher, engineer or other end user. Open source standards increase interoperability, which make such -resources easier to share. +resources easier to share. FIXME_ALASTAIR Now talk about Semantic Web Again, quoting from the IST workprogramme, this requires progress in three main technology building blocks: - - pushing the limits of miniaturisation and minimising the costs +ena - pushing the limits of miniaturisation and minimising the costs and power consumption of microelectronic components and micro-systems. @@ -170,8 +168,9 @@ software will be encouraged when appropriate to ensure interoperability of solutions and to further innovation. -This is PyPy in a nutshell. An Open Source language that can be -adapted to accomodate new applications and services. +This is PyPy in a nutshell. An Open Source language that is explicitly +designed for the next generation of products and services. FIXME_SAMUELE +quote from the work package??? - Developing user friendly interfaces which are intuitive, can interpret all our senses such as speech, vision and touch and @@ -182,45 +181,18 @@ and creation of digital content more effective and more creative. -Now we need to talk about synergies with the Direct Info/Semantic Web -project that DKFI is also involved with. Alastair needs to write this -bit. - -Also, I have missed some parts, and Nicolas needs to write a bit about -constraint programming. - -:DELETE:BEGIN - -2.2 European Dimension - -:DELETE:END - -European Dimension -++++++++++++++++++++++ - -I don't know what to say here. - -:DELETE:BEGIN - -2.3 Links and Complimentary with Other Programmes - -:DELETE:END +FIXME_ALASTAIR SEmantic web, +FIXME_NICO Narval? where does constraint programming go? Links and Complimentary with Other Programmes +++++++++++++++++++++++++++++++++++++++++++++++++ - -Direct Info/Semantic Web, correct? ask Alastair and Armin to talk about their current projects - -:DELETE:BEGIN - -2.4 Contribution to Community Social Objectives - -:DELETE:END +FIXME_ARMIN FIXME_NICO FIXME_ALASTAIR FIXME_BEA +Talk about your projects. Contribution to Community Social Objectives +++++++++++++++++++++++++++++++++++++++++++++++ -I don't know what to say here, either. Have I said it already? +FIXME_LAURA ask Michel Contributiuon to EC Policies ++++++++++++++++++++++++++++++++ From tismer at codespeak.net Fri Oct 10 16:10:42 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 16:10:42 +0200 (MEST) Subject: [pypy-svn] rev 1664 - pypy/trunk/doc/funding Message-ID: <20031010141042.55A825A253@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 16:10:41 2003 New Revision: 1664 Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Log: added the whole text of A(nna|lex) into this package, knowing that we have to put much stuff elsewhere. Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Fri Oct 10 16:10:41 2003 @@ -41,6 +41,52 @@ Forum (PBF) and the Python developers list (python-dev at python.org). +XXX here is the new text from Anna and Alex: + +WP 14 + +Each "sprint", as well as the regular progress of non-sprint development, will +produce technical novelties, some of which may afford immediate use and adoption +of the novel technologies being developed. WP 14 will periodically produce short +reports on the result of "sprints" and other development. Said reports will be +posted to the relevant mailing lists as well as archived on both the PyPy and +the Python Business Forum website for universal availability. + +Python community members will be encouraged to keep current with the project +through the short reports, while community feedback on technical developments +will be gathered on the website and mailing lists to be used by the appropriate +project areas to further enhance the project's development efforts, in true Open +Source spirit. + +In addition to the periodically produced short reports, WP 14 will on occasion +present longer, detailed reports to the Commission, and to scientific committees +advising the Commission on technical issues. Technical papers and talks will be +submitted to scientific conferences which deal with the subject matters covered +by the project. When the advancement of the project warrants it, WP 14 will also +publish "popularization" articles and tutorial materials to help other +practitioners of software development to make practical use of the project's +results. Diagrams and schematics will be provided to illustrate fundamental +concepts, as appropriate to the audience and the subject matter. + +The person in charge of WP 14 will be Alex Martelli, a member of both the core +Python developers and of the Python Business Forum, author of the best-selling +book "Python in a Nutshell", co-editor of the collectively authored "Python +Cookbook", popular for his articles on both printed and online venues, and +technical editor and/or reviewer of most of the Python books published over the +last couple of years. Dr. Martelli has a background of leading multi-cultural +software development teams and providing presentations and reports in various +formats to audiences at all levels of technical expertise. His team will include +members with a diversity of languages and backgrounds, which will prove crucial +in the popularization phase, in particular, which may require authoring, +translation, and presentation in the many different languages of the European +Union. + +XXX TODO: + +- Make a shorter version for here +- move personal stuff into a better place +- extract and use some for the introduction text + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From arigo at codespeak.net Fri Oct 10 16:24:10 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 16:24:10 +0200 (MEST) Subject: [pypy-svn] rev 1665 - pypy/trunk/doc/funding Message-ID: <20031010142410.BFBB95A253@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 16:24:09 2003 New Revision: 1665 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Fixes in my CV Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 16:24:09 2003 @@ -41,8 +41,8 @@ at the University of Southampton (UK). He studied Mathematics at the University of Lausanne and obtained his Ph.D. in Logic and Set Theory at the Free University of Brussels. He is the main author of several -commercial, open source and research projects and contributed to a number -of them, notoriously in the fields of computer graphics and 3D modelling, +commercial, open source and research programs and contributed to a number +of them, most notably in the fields of computer graphics and 3D modelling, education, and programming languages. He recently developed in the Psyco project novel techniques for efficient interpretation of dynamic programming languages. He is also a member and contributor of the TUNES Project for a From jacob at codespeak.net Fri Oct 10 16:27:34 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Fri, 10 Oct 2003 16:27:34 +0200 (MEST) Subject: [pypy-svn] rev 1666 - pypy/trunk/doc/funding Message-ID: <20031010142734.640115A253@thoth.codespeak.net> Author: jacob Date: Fri Oct 10 16:27:33 2003 New Revision: 1666 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: A bit of reformatting. Added details about myself. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 16:27:33 2003 @@ -1,14 +1,20 @@ B 5.0 Project Management - PyPy as a project will be implementing an agile development lifecycle.This choice of - development method will have effects on the way the project will be structured and managed. - - The project will have a structured project plan as is showed in this proposal (workpackages, - Gantt-chart, deliverables, quality control etc). It also means that the project process, once the - project get started, will work from a evaluate-feedback-change perspective, or so called - "learning loops" in which project management will continuosly follow up on the intital - project plan but also evaluate process, teameffectiveness, communication climate. From these - learning loops change, when necessary, will be applied throughout the process. + PyPy as a project will be implementing an agile + development lifecycle.This choice of development method + will have effects on the way the project will be + structured and managed. + + The project will have a structured project plan as is + showed in this proposal (workpackages, Gantt-chart, + deliverables, quality control etc). It also means that the + project process, once the project get started, will work + from a evaluate-feedback-change perspective, or so called + "learning loops" in which project management will + continuosly follow up on the intital project plan but also + evaluate process, teameffectiveness, communication + climate. From these learning loops change, when necessary, + will be applied throughout the process. To illustrate the focus on development process as well as project focus: @@ -46,40 +52,49 @@ - Python communities etc.etc - Both the project and the development process are based around critical workshops, so called - "sprints" that will take place on a six week cycle throughout the project (24 months). Around - these sprints input and output to stakeholders will be structured. The arrows above symbolize - the evaluation-feedback-change system that will be implemented. - - - -This method will affect the role of the project management, management structure, role of -coordinator, project meetings, quality control and communication in the project in what we -have experienced to be a very constructive way. -Our reasons for choosing this development and projectmethod are several: -?This project has a history of 6 months in which the team succesfully implemented sprints - and agile development methods -?In this project, teammembers from 5 (?) different countries will work continuosly in separate - places, sprints will be the main forum in which the teammembers meet up and work - together in real life -?The sprints will be open for nonteammembers to participate in the development process, thus - allowing for an open and feedbackdriven process -?The sprints will be the forum in which knowledge will be shared and the transparancy within - the project organisation will be measured - -We will during the project focus on evaluating and documenting our projectmethod and share -knowledge and experience in that area as well. It is our goal that the overall deliverables from -this project will be a functioning PyPy as well as an effective projectmethod for agile -development/Open Source projects. + Both the project and the development process are based + around critical workshops, so called "sprints" that will + take place on a six week cycle throughout the project (24 + months). Around these sprints input and output to + stakeholders will be structured. The arrows above + symbolize the evaluation-feedback-change system that will + be implemented. + +This method will affect the role of the project management, management +structure, role of coordinator, project meetings, quality control and +communication in the project in what we have experienced to be a very +constructive way. Our reasons for choosing this development and +projectmethod are several: + +?This project has a history of 6 months in which the team succesfully + implemented sprints and agile development methods + +?In this project, teammembers from 5 (?) different countries will work + continuosly in separate places, sprints will be the main forum in + which the teammembers meet up and work together in real life + +?The sprints will be open for nonteammembers to participate in the + development process, thus allowing for an open and feedbackdriven + process + +?The sprints will be the forum in which knowledge will be shared and + the transparancy within the project organisation will be measured + +We will during the project focus on evaluating and documenting our +projectmethod and share knowledge and experience in that area as +well. It is our goal that the overall deliverables from this project +will be a functioning PyPy as well as an effective projectmethod for +agile development/Open Source projects. -On the following pages we will describe in more detail how this choice of method will -influence the way this project will be managed. +On the following pages we will describe in more detail how this choice +of method will influence the way this project will be managed. B 5.1 Project manager -The PyPy project will have a project management structure that is based upon two resources, -Jacob Hall?n as project manager and Beatrice D?ring as assisting project manager. +The PyPy project will have a project management structure that is +based upon two resources, Jacob Hall?n as project manager and Beatrice +D?ring as assisting project manager. The role of the project manager is to: manage the project and its scope of time, budget and deliverables @@ -94,101 +109,137 @@ report to the project manager participate in reports to management board and project coordinator manage project administration (reports, documentation,etc) - manage routines for sprints, quality assurance of project process, resourceallocation - manage contact with external partners - manage the day-to-day operations of the project (ex. executing decisions made by - management board) - manage the knowledge process and actively spread information to the Open Source - community regarding methods used + manage routines for sprints, quality assurance of project + process, resourceallocation manage contact with external partners + manage the day-to-day operations of the project (ex. executing + decisions made by management board) manage the knowledge process + and actively spread information to the Open Source community + regarding methods used The reasons for having a structure based on a project manager and assisting project manager are: - - - both the development and the project process will recieve due attention in that the persons - chosen have expert skills in these different areas - the project will not be exposed to the risk that a single project manager would mean - (hhmm d?ligt ? formulera om) - a project of this size with team and stakeholders distributed in several countries needs more - project management resources + both the development and the project process will recieve due + attention in that the persons chosen have expert skills in these + different areas the project will not be exposed to the risk that + a single project manager would mean (hhmm d?ligt ? formulera om) + a project of this size with team and stakeholders distributed in + several countries needs more project management resources -The skills and experience of the combined project management team are as followed: +The skills and experience of the combined project management team are +as followed: Large scale projects: -Jacob Hall?n have been working since 1994 with large scale development projects. He was a -consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden -(http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being -systems architect for the national bibliography system and interlibrary loan system. -Participated in international standardisation groups for search systems (Z39.50) and -interlibrary loans. - -He was also the initiator of the international standardisation effort for library services -information. Participated as the Royal Library representative in ONE-2, an EU funded project -under the Telematics for Libraries project (http://www.one-2.org) - -Since 2000, Jacob have been involved in co-founding AB Strakt (http://www.strakt.com), a -company developing workflow and document handling systems. There he works in roles as -developer, project manager, CTO and CEO. The company has grown from 3 employees to -having 12 full time employees and 6 part time employees so far. - -Connected to his work at AB Strakt, Jacob has also been active as co-founder and chairman of -the Python Business Forum, an international trade organisation for companies that use Python -as their main tool of business. The PBF has approximately 50 member organisations. -He is also the project leader for the Europython 2004 conference, to be held in -G?teborg, Sweden 9-11 June 2004. - -Beatrice D?ring have experience in large scale education projects involving working with -consortiums of three companies servicing a stakeholdergroup of about 30 recruiting -companies. These large education projects was part of a national program to solve shortages -of skilled IT-personel during the years 1998- 2000. 200 students participated in the projects -and the projects met their deliverables in that over 80% of the student were employed after the -education. The project team consisted of 7 persons working full time. As a project manager, -Beatrice was responsible for meeting project goals, meeting profit margins, leading the team -and creating strategies for stakeholder participation in the projects. She was also responsible -for reporting and documenting the project to the client. - -Since 2000 she has been involved in similar assigments, one recently finished for University -of Blekinge in which the education was directed towards recruiting companies in the -gamedevelopment industry. She has also worked as project manager for several development -projects during the time 1998-2002. - - - -She has also developed project methods for the companies and teams shes been working with -and have also been working with quality assurance of development projects. Her current -company, Change Maker is also working with supporting smaller companies in the -application process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience of -working with similar EU-funded projects since 1997. +Jacob Hall?n has been working since 1994 with large scale development +projects. He was a consultant for, and later employee of, the LIBRIS +Department of the Royal Library of Sweden (http://www.libris.kb.se) in +the role of Technical Project Manager, with main focus on being +systems architect for the national bibliography system and +interlibrary loan system. Participated in international +standardisation groups for search systems (Z39.50) and interlibrary +loans. + +He was also the initiator of the international standardisation effort +for library services information. Participated as the Royal Library +representative in ONE-2, an EU funded project under the Telematics for +Libraries project (http://www.one-2.org) + +Since 2000, Jacob has been involved in founding AB Strakt +(http://www.strakt.com), a company developing workflow and document +handling systems. There he has worked in roles as developer, project +manager, CTO and CEO. The company has grown from 3 employees to having +12 full time employees and 6 part time employees so far. + +Connected to his work at AB Strakt, Jacob has also been active as +co-founder and chairman of the Python Business Forum, an international +trade organisation for companies that use Python as their main tool of +business. The PBF has approximately 50 member organisations. He is +also the project leader for the Europython 2004 conference, to be held +in G?teborg, Sweden 9-11 June 2004. + +Beatrice D?ring has experience in large scale education projects +involving working with consortiums of three companies servicing a +stakeholdergroup of about 30 recruiting companies. These large +education projects was part of a national program to solve shortages +of skilled IT-personel during the years 1998- 2000. 200 students +participated in the projects and the projects met their deliverables +in that over 80% of the student were employed after the education. The +project team consisted of 7 persons working full time. As a project +manager, Beatrice was responsible for meeting project goals, meeting +profit margins, leading the team and creating strategies for +stakeholder participation in the projects. She was also responsible +for reporting and documenting the project to the client. + +Since 2000 she has been involved in similar assigments, one recently +finished for University of Blekinge in which the education was +directed towards recruiting companies in the gamedevelopment +industry. She has also worked as project manager for several +development projects during the time 1998-2002. + +She has also developed project methods for the companies and teams +shes been working with and have also been working with quality +assurance of development projects. Her current company, Change Maker +is also working with supporting smaller companies in the application +process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience +of working with similar EU-funded projects since 1997. Financial tracking in projects: -Jacob Hall?n has a widespread experience of founding and managing companies as well as -being project manager for large scale projects. This means that - -The large scale education projects that Beatrice managed had a profitmargin of 20% which -was met. The total budget for these projects was 20 million SEK. She has also recently been -involved in the prestudy, budgeting and start of a 6 year long education project in Arvika, -Sweden with a total budget of 18 million SEK. - -During her time as a manager for the education and consultdepartment in NetGuide -Scandinavia (1999-2002) she had budget and resultresponsibility. +Jacob Hall?n has a widespread experience of founding and managing +companies as well as being project manager for large scale +projects. He has also developed several accounting programs. When +being the CEO of NetGuide Scandinavia AB, the company was under +budgetary squeeze in its early days, generating a lot of experience in +tight cost control and progress tracking. The management was +successful and the company grew to 35 employees under his leadership. + +The large scale education projects that Beatrice managed had a +profitmargin of 20% which was met. The total budget for these projects +was SEK 20 million. She has also recently been involved in the +prestudy, budgeting and start of a 6 year long education project in +Arvika, Sweden with a total budget of 18 million SEK. + +During her time as a manager for the education and consultant +department in NetGuide Scandinavia (1999-2002) she had budget and +result responsibility. Leadership skills: -Jacob Hall?n have experienced leadership challenges in different situations. Since - -Beatrice D?ring have experience from leadership situations in projects as well as in -lineorganisations since 1998. During four years she was a part of a management team of five -people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, -motivating and developing her personel. - -Beatrice employs strategies of empowerment, active listening combined with creating and -maintaining an open communication climate based on honesty and trust the achieve goals -together with her team. Beatrice have been teaching management oriented courses -(leadership, project management, communication, conflictresolving) for Learning Tree -International since 2003 in both Sweden and USA. +Jacob Hall?n has experienced leadership challenges in different +situations. In his role as an officer in the reserve of the Swedish +army he has been deputy rifle platoon leader in the Swedsh UN forces +in Cyprus, duty officer with responsibility for the battalion safety +and security in Lebanon and instructor/platoon leader for traing raw +recruits. He has been a teacher at the Chalmers University of +Technology, for Informator and for LearningTree International, all of +which include being a leader for your students. At NetGuide +Scandinavia his leadership was mostly focused on leading the company, +initially with 4 people. A number that grew to 35 in the subsequent 3 +years. + +At LIBRIS he assisted the project leader for the SEK 20 million +modernisation project in getting consensus among the approximately 30 +members of the consortium on what sort of changes should be required, +wanted or tolerated in the new system. + +AT AB Strakt, Jacob Hall?n started out managing the company but +changed his role to Chief Technical Officer, after successfully +recruiting a suitable CEO as replacement. Jacob enjoys managing +technical processes more than general corporate management. + +Beatrice D?ring have experience from leadership situations in projects +as well as in lineorganisations since 1998. During four years she was +a part of a management team of five people, leading teams of 5 to 14 +people. As a leader, Beatrice was responsible for coaching, motivating +and developing her personel. + +Beatrice employs strategies of empowerment, active listening combined +with creating and maintaining an open communication climate based on +honesty and trust the achieve goals together with her team. Beatrice +have been teaching management oriented courses (leadership, project +management, communication, conflictresolving) for Learning Tree +International since 2003 in both Sweden and USA. B 5.2 Management structure @@ -199,118 +250,141 @@ Project Meetings -Management Board will meet at the start of the project and two times per year or on an ad hoc -basis as requested. The meetings will normally be scheduled to rotate between countries of the -EU and mainly the principal contractors home base. The project manager is responsible for -the invite and agenda as well as managing the meetings. Objectives on these meeting are -tracking progress regarding workpackages, budget, timescale and strategies for involving - - -stakeholders as in partners or new partners. Agenda and discussions/decisions on these -meeting will be documented and put up in the internal project web. +Management Board will meet at the start of the project and two times +per year or on an ad hoc basis as requested. The meetings will +normally be scheduled to rotate between countries of the EU and mainly +the principal contractors home base. The project manager is +responsible for the invite and agenda as well as managing the +meetings. Objectives on these meeting are tracking progress regarding +workpackages, budget, timescale and strategies for involving +stakeholders as in partners or new partners. Agenda and +discussions/decisions on these meeting will be documented and put up +in the internal project web. Team Meetings -The project team will meet at the "sprints" which take place on a six week cycle ( se below). -During the sprints, there will be time allotted to discuss and evaluate the project process, track -progress, discuss resource allocation, new teammembers. The project manager is responsible -for the invite and agenda as well as managing the meetings.Agenda and discussions/decisions -on these meeting will be documented and put up in the internal project web. +The project team will meet at the "sprints" which take place on a six +week cycle ( se below). During the sprints, there will be time +allotted to discuss and evaluate the project process, track progress, +discuss resource allocation, new teammembers. The project manager is +responsible for the invite and agenda as well as managing the +meetings.Agenda and discussions/decisions on these meeting will be +documented and put up in the internal project web. Project review workshops ("learning loops") -Every six months, as preparation for the Management Board meetings and project reviews -from the EU project office, the project management team invites the team to an evaluation -workshop, lasting for a day, in which product as well as process is being reviewed. -Riskassessment is also an important part of this workshop. This meeting could result in -proposed changes that will then be reported to the Management Board for decision. -The project manager is responsible for the invite and agenda as well as managing the -meetings.Agenda and discussions/decisions on these meeting will be documented and put up -in the internal project web. +Every six months, as preparation for the Management Board meetings and +project reviews from the EU project office, the project management +team invites the team to an evaluation workshop, lasting for a day, in +which product as well as process is being reviewed. Riskassessment is +also an important part of this workshop. This meeting could result in +proposed changes that will then be reported to the Management Board +for decision. The project manager is responsible for the invite and +agenda as well as managing the meetings.Agenda and +discussions/decisions on these meeting will be documented and put up +in the internal project web. "Sprint" Meetings are the key to PyPy's technical development -Key to PyPy's technical development and research are so called "sprints". These publically -announced one-week meetings serve as an intense working forum to rapidly discuss and -implement key PyPy ideas with agile methodologies. Developers usually pair up and write -unit-tests to test the to-be-implemented features before actually adding them. The unittest-first -approach helps to understand the planned feature. Additionally, the discussion in a pair makes -sure that obviously wrong pathes of development are avoided. If something seems too hard to -test or to pin down explicitely this is taken as an indication of an underlying design problem. - -Note that more traditional approaches usually follow a model where developers work alone -and only meet to talk. Instead with sprint-driven development talking and actually -implementing resulting ideas ensures a more focused approach with fast feedback cycles. -While the free software community is successful especially because of it's open -communication model sprints are an accelerator to this process. While coding in pairs -developers educate each other which leads to a broader common understanding of the project. -During a sprint multiple pairs want to work in parallel which adds pressure on design -decisions so that independent development of components of the system is possible. Thus -sprints not only deepen the communication and understanding among researchers and -developers but they imply a working process which enhances the software design in multiple -ways. The project manager is responsible for the invite (stated goal) and agenda as well as -processmanagement during the sprints. Agenda and discussions/decisions on these sprints will -be documented and put up in the internal project web. - -With a very-high-level-language like Python rapid development in coding-sprints becomes -especially effective. A VHLL-language generally allows to focus on ideas rather than on low- -level language details. In combintation with pervasive test-driven development this eases - - -high-quality rapid evolution towards the intendent goals. Obviously, the PyPy developers are -very experienced with Python and bigger applications in general. Thus the full potential of -agile methodologies is unvealed during PyPy sprints. In less than five weeks worth of -development (during four sprints) the group produced a working prototype which is a big -success not only in the eyes of its developers. +Key to PyPy's technical development and research are so called +"sprints". These publically announced one-week meetings serve as an +intense working forum to rapidly discuss and implement key PyPy ideas +with agile methodologies. Developers usually pair up and write +unit-tests to test the to-be-implemented features before actually +adding them. The unittest-first approach helps to understand the +planned feature. Additionally, the discussion in a pair makes sure +that obviously wrong pathes of development are avoided. If something +seems too hard to test or to pin down explicitely this is taken as an +indication of an underlying design problem. + +Note that more traditional approaches usually follow a model where +developers work alone and only meet to talk. Instead with +sprint-driven development talking and actually implementing resulting +ideas ensures a more focused approach with fast feedback cycles. +While the free software community is successful especially because of +it's open communication model sprints are an accelerator to this +process. While coding in pairs developers educate each other which +leads to a broader common understanding of the project. During a +sprint multiple pairs want to work in parallel which adds pressure on +design decisions so that independent development of components of the +system is possible. Thus sprints not only deepen the communication and +understanding among researchers and developers but they imply a +working process which enhances the software design in multiple +ways. The project manager is responsible for the invite (stated goal) +and agenda as well as processmanagement during the sprints. Agenda and +discussions/decisions on these sprints will be documented and put up +in the internal project web. + +With a very-high-level-language like Python rapid development in +coding-sprints becomes especially effective. A VHLL-language generally +allows to focus on ideas rather than on low- level language +details. In combintation with pervasive test-driven development this +eases high-quality rapid evolution towards the intendent +goals. Obviously, the PyPy developers are very experienced with Python +and bigger applications in general. Thus the full potential of agile +methodologies is unvealed during PyPy sprints. In less than five weeks +worth of development (during four sprints) the group produced a +working prototype which is a big success not only in the eyes of its +developers. Technical decisions -Major design or technical decisions are usually reached through consensus during the sprints. -If a conflict cannot be resolved there then the technical board gets the final say. The members -of the technical board are appointed by a vote of everyone who has commit rights to the -source repository. However, it is expected that design and implementation choices will -usually be determined by consensual agreement or by informal votes on the development -mailing list. This is common practice within the Python and many others free softare -communities. Also, the PyPy developers and researchers will construct few if any formal -hierarchies between them. Constantly working together with agile methodologies and the -visilibity of each individual contribution help enforce high-quality program code and good -design decisions. +Major design or technical decisions are usually reached through +consensus during the sprints. If a conflict cannot be resolved there +then the technical board gets the final say. The members of the +technical board are appointed by a vote of everyone who has commit +rights to the source repository. However, it is expected that design +and implementation choices will usually be determined by consensual +agreement or by informal votes on the development mailing list. This +is common practice within the Python and many others free softare +communities. Also, the PyPy developers and researchers will construct +few if any formal hierarchies between them. Constantly working +together with agile methodologies and the visilibity of each +individual contribution help enforce high-quality program code and +good design decisions. B 5.5 Quality control of technical development -The PyPy project will ensure quality by a variety of means. On the grand scale, the -involvement of excellent researchers ensures that the general direction takes care of latest -insights in language research. Moreover, we will publish our research results on conferences -and to scientific and free software communities. This forms the basis to maintain a high- -quality general technical direction. - -The developers deploy agile methodologies like unittest-driven development and pair- -programming. By the end of the project we expect to have produced more than 3000 unittests -testing every aspect of the runtime system. The presence of such tests also allows to rapidly -change parts of the implementation without fear of breaking functionality elsewhere. We also -plan to release our runtime system often and thus gather additional feedback from early -adopters, developers and researchers. - -To support the open development we base all of our documents, source code and website -information on a version control system. In combintation with a notification on all changes -this ensures that all interested parties can review and react to developments. - -The PyPy developers have produced a working prototype within four one-week sprints and a -little development in between. The code and design quality of the project is already widely -accepted. There are now 400 unittests. As a consequence, Guido van Rossum, the inventor -and maintainer of today's Python, listed is as the number one project he would like to succeed. -He previously attended one of our sprints and got deeply involved with our architecture and -source code which he immediately found intuitive to work with. -Thus we believe that our choices for technical quality management are fit to meet highest -standards. + +The PyPy project will ensure quality by a variety of means. On the +grand scale, the involvement of excellent researchers ensures that the +general direction takes care of latest insights in language +research. Moreover, we will publish our research results on +conferences and to scientific and free software communities. This +forms the basis to maintain a high- quality general technical +direction. + +The developers deploy agile methodologies like unittest-driven +development and pair-programming. By the end of the project we expect +to have produced more than 3000 unittests testing every aspect of the +runtime system. The presence of such tests also allows to rapidly +change parts of the implementation without fear of breaking +functionality elsewhere. We also plan to release our runtime system +often and thus gather additional feedback from early adopters, +developers and researchers. + +To support the open development we base all of our documents, source +code and website information on a version control system. In +combintation with a notification on all changes this ensures that all +interested parties can review and react to developments. + +The PyPy developers have produced a working prototype within four +one-week sprints and a little development in between. The code and +design quality of the project is already widely accepted. There are +now 400 unittests. As a consequence, Guido van Rossum, the inventor +and maintainer of today's Python, listed is as the number one project +he would like to succeed. He previously attended one of our sprints +and got deeply involved with our architecture and source code which he +immediately found intuitive to work with. Thus we believe that our +choices for technical quality management are fit to meet highest +standards. Additional Quality procedures - - -The project manager will circulate a draft Quality Management plan for the project prior to -first Project Meeting and and then present it for approval at the first Meeting. It should -complement the prescribed quality approach with respect to the following aspects: +The project manager will circulate a draft Quality Management plan for +the project prior to first Project Meeting and and then present it for +approval at the first Meeting. It should complement the prescribed +quality approach with respect to the following aspects: Document procedures, standards and control Issue control for documents @@ -330,46 +404,54 @@ B 5.6 Communication and reporting The project process will be reported as follows: - monthly written status reports to the Management Board/Technical Board by the project - management team. These reports will be posted on the internal project web for the entire - team to access. - project review report to the EU project office. These reports are the result of the project - review workshops (every 6th month) and are produced by the project management team. - These reports will be posted on the internal project web for the entire team to access. - Project evaluation report. At the end of the project, an evaluation report will be produced in - which both product, process and deliverables will be evaluated. This report will be - presented to stakeholders (consortium companies and partners) and the EU project office. - -The technical development of PyPy is driven by open continous discussion. Many of the -involved decisions are made and verified during one-week working meetings, so called -"sprints". Members from the larger Python software community are publicly invited and have -the chance to interact and work with the PyPy developers or become one themselves. -Mailing lists, chat-sessions, Wikis and notification of program changes provide a constant -flow of information between PyPy project members and the wider community. Additionally, -groups of developers can start interactive "screen" sessions which allows sharing their -workspace and implement and communicate efficiently. Therefore conflicts out of missing or -conflicting information or due to misunderstandings will be minimized. - -Each sprint meeting is planned for by all developers. The sprint goals are usually agreed upon -before the meeting starts. This is also important to allow new developers or contributors to -join specific efforts. Sprint results are subsequently published to email and web-channels to -gather feedback and educate others about changes. - -We will present multiple reports and scientific papers on major conferences such as -EuroPython (Python's european community conference), OSCON (Open Source Convention), -PyCon (python developer conference) and to domain specific audiences such as embedded - - -device developers.In a later phase of the project the PEP (Python Enhancement Proposals) -procedures may be implemented. This is the standard procedure for applying changes to the -C-implementation of Python as of today. It forces an author to clearly state the benefits of the -proposed Enhancement and provides an rationale. However, such a formal method will only -by required when the project reaches the point where users begin to rely on aspects of our -implementation. + + Monthly written status reports to the Management Board/Technical + Board by the project management team. These reports will be + posted on the internal project web for the entire team to access. + project review report to the EU project office. These reports are + the result of the project review workshops (every 6th month) and + are produced by the project management team. These reports will + be posted on the internal project web for the entire team to + access. + + Project evaluation report. At the end of the project, an + evaluation report will be produced in which both product, process + and deliverables will be evaluated. This report will be presented + to stakeholders (consortium companies and partners) and the EU + project office. + +The technical development of PyPy is driven by open continous +discussion. Many of the involved decisions are made and verified +during one-week working meetings, so called "sprints". Members from +the larger Python software community are publicly invited and have the +chance to interact and work with the PyPy developers or become one +themselves. Mailing lists, chat-sessions, Wikis and notification of +program changes provide a constant flow of information between PyPy +project members and the wider community. Additionally, groups of +developers can start interactive "screen" sessions which allows +sharing their workspace and implement and communicate +efficiently. Therefore conflicts out of missing or conflicting +information or due to misunderstandings will be minimized. + +Each sprint meeting is planned for by all developers. The sprint goals +are usually agreed upon before the meeting starts. This is also +important to allow new developers or contributors to join specific +efforts. Sprint results are subsequently published to email and +web-channels to gather feedback and educate others about changes. + +We will present multiple reports and scientific papers on major +conferences such as EuroPython (Python's european community +conference), OSCON (Open Source Convention), PyCon (python developer +conference) and to domain specific audiences such as embedded device +developers.In a later phase of the project the PEP (Python Enhancement +Proposals) procedures may be implemented. This is the standard +procedure for applying changes to the C-implementation of Python as of +today. It forces an author to clearly state the benefits of the +proposed Enhancement and provides an rationale. However, such a formal +method will only by required when the project reaches the point where +users begin to rely on aspects of our implementation. B 5.7 Consortium ? dont write B 5.8 Ip ? dont write - - From jacob at codespeak.net Fri Oct 10 16:35:38 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Fri, 10 Oct 2003 16:35:38 +0200 (MEST) Subject: [pypy-svn] rev 1667 - pypy/trunk/doc/funding Message-ID: <20031010143538.B00905A253@thoth.codespeak.net> Author: jacob Date: Fri Oct 10 16:35:37 2003 New Revision: 1667 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Added formatting. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 16:35:37 2003 @@ -1,22 +1,19 @@ - B 5.0 Project Management +B 5.0 Project Management +======================== +PyPy as a project will be implementing an agile development +lifecycle.This choice of development method will have effects on the +way the project will be structured and managed. + +The project will have a structured project plan as is showed in this +proposal (workpackages, Gantt-chart, deliverables, quality control +etc). It also means that the project process, once the project get +started, will work from a evaluate-feedback-change perspective, or so +called "learning loops" in which project management will continuosly +follow up on the intital project plan but also evaluate process, +teameffectiveness, communication climate. From these learning loops +change, when necessary, will be applied throughout the process. - PyPy as a project will be implementing an agile - development lifecycle.This choice of development method - will have effects on the way the project will be - structured and managed. - - The project will have a structured project plan as is - showed in this proposal (workpackages, Gantt-chart, - deliverables, quality control etc). It also means that the - project process, once the project get started, will work - from a evaluate-feedback-change perspective, or so called - "learning loops" in which project management will - continuosly follow up on the intital project plan but also - evaluate process, teameffectiveness, communication - climate. From these learning loops change, when necessary, - will be applied throughout the process. - - To illustrate the focus on development process as well as project focus: +To illustrate the focus on development process as well as project focus: Stakeholders; - EU @@ -91,7 +88,7 @@ B 5.1 Project manager - +===================== The PyPy project will have a project management structure that is based upon two resources, Jacob Hall?n as project manager and Beatrice D?ring as assisting project manager. @@ -130,8 +127,8 @@ as followed: Large scale projects: - -Jacob Hall?n has been working since 1994 with large scale development +--------------------- +*Jacob Hall?n* has been working since 1994 with large scale development projects. He was a consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden (http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being @@ -158,7 +155,7 @@ also the project leader for the Europython 2004 conference, to be held in G?teborg, Sweden 9-11 June 2004. -Beatrice D?ring has experience in large scale education projects +*Beatrice D?ring* has experience in large scale education projects involving working with consortiums of three companies servicing a stakeholdergroup of about 30 recruiting companies. These large education projects was part of a national program to solve shortages @@ -185,8 +182,8 @@ of working with similar EU-funded projects since 1997. Financial tracking in projects: - -Jacob Hall?n has a widespread experience of founding and managing +------------------------------- +*Jacob Hall?n* has a widespread experience of founding and managing companies as well as being project manager for large scale projects. He has also developed several accounting programs. When being the CEO of NetGuide Scandinavia AB, the company was under @@ -194,7 +191,7 @@ tight cost control and progress tracking. The management was successful and the company grew to 35 employees under his leadership. -The large scale education projects that Beatrice managed had a +The large scale education projects that *Beatrice* managed had a profitmargin of 20% which was met. The total budget for these projects was SEK 20 million. She has also recently been involved in the prestudy, budgeting and start of a 6 year long education project in @@ -205,7 +202,7 @@ result responsibility. Leadership skills: - +------------------ Jacob Hall?n has experienced leadership challenges in different situations. In his role as an officer in the reserve of the Swedish army he has been deputy rifle platoon leader in the Swedsh UN forces @@ -243,13 +240,13 @@ B 5.2 Management structure - +========================== B 5.3 Coordinator ? dont write - +============================== B 5.4 Project meetings - +====================== Project Meetings - +---------------- Management Board will meet at the start of the project and two times per year or on an ad hoc basis as requested. The meetings will normally be scheduled to rotate between countries of the EU and mainly @@ -262,7 +259,7 @@ in the internal project web. Team Meetings - +------------- The project team will meet at the "sprints" which take place on a six week cycle ( se below). During the sprints, there will be time allotted to discuss and evaluate the project process, track progress, @@ -272,7 +269,7 @@ documented and put up in the internal project web. Project review workshops ("learning loops") - +------------------------------------------- Every six months, as preparation for the Management Board meetings and project reviews from the EU project office, the project management team invites the team to an evaluation workshop, lasting for a day, in @@ -286,7 +283,7 @@ "Sprint" Meetings are the key to PyPy's technical development - +------------------------------------------------------------- Key to PyPy's technical development and research are so called "sprints". These publically announced one-week meetings serve as an intense working forum to rapidly discuss and implement key PyPy ideas @@ -329,9 +326,9 @@ developers. Technical decisions - +------------------- Major design or technical decisions are usually reached through -consensus during the sprints. If a conflict cannot be resolved there +consensus during the sprints. If a conflict cannot be resolved there then the technical board gets the final say. The members of the technical board are appointed by a vote of everyone who has commit rights to the source repository. However, it is expected that design @@ -345,7 +342,7 @@ good design decisions. B 5.5 Quality control of technical development - +============================================== The PyPy project will ensure quality by a variety of means. On the grand scale, the involvement of excellent researchers ensures that the general direction takes care of latest insights in language @@ -380,7 +377,7 @@ standards. Additional Quality procedures - +----------------------------- The project manager will circulate a draft Quality Management plan for the project prior to first Project Meeting and and then present it for approval at the first Meeting. It should complement the prescribed @@ -402,7 +399,7 @@ B 5.6 Communication and reporting - +================================= The project process will be reported as follows: Monthly written status reports to the Management Board/Technical @@ -453,5 +450,6 @@ B 5.7 Consortium ? dont write - +============================= B 5.8 Ip ? dont write +===================== \ No newline at end of file From jacob at codespeak.net Fri Oct 10 16:39:23 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Fri, 10 Oct 2003 16:39:23 +0200 (MEST) Subject: [pypy-svn] rev 1668 - pypy/trunk/doc/funding Message-ID: <20031010143923.735875A253@thoth.codespeak.net> Author: jacob Date: Fri Oct 10 16:39:22 2003 New Revision: 1668 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Added more formatting. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 16:39:22 2003 @@ -128,7 +128,7 @@ Large scale projects: --------------------- -*Jacob Hall?n* has been working since 1994 with large scale development +**Jacob Hall?n** has been working since 1994 with large scale development projects. He was a consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden (http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being @@ -155,7 +155,7 @@ also the project leader for the Europython 2004 conference, to be held in G?teborg, Sweden 9-11 June 2004. -*Beatrice D?ring* has experience in large scale education projects +**Beatrice D?ring** has experience in large scale education projects involving working with consortiums of three companies servicing a stakeholdergroup of about 30 recruiting companies. These large education projects was part of a national program to solve shortages @@ -183,7 +183,7 @@ Financial tracking in projects: ------------------------------- -*Jacob Hall?n* has a widespread experience of founding and managing +**Jacob Hall?n** has a widespread experience of founding and managing companies as well as being project manager for large scale projects. He has also developed several accounting programs. When being the CEO of NetGuide Scandinavia AB, the company was under @@ -191,7 +191,7 @@ tight cost control and progress tracking. The management was successful and the company grew to 35 employees under his leadership. -The large scale education projects that *Beatrice* managed had a +The large scale education projects that **Beatrice** managed had a profitmargin of 20% which was met. The total budget for these projects was SEK 20 million. She has also recently been involved in the prestudy, budgeting and start of a 6 year long education project in @@ -203,7 +203,7 @@ Leadership skills: ------------------ -Jacob Hall?n has experienced leadership challenges in different +**Jacob Hall?n** has experienced leadership challenges in different situations. In his role as an officer in the reserve of the Swedish army he has been deputy rifle platoon leader in the Swedsh UN forces in Cyprus, duty officer with responsibility for the battalion safety @@ -225,7 +225,7 @@ recruiting a suitable CEO as replacement. Jacob enjoys managing technical processes more than general corporate management. -Beatrice D?ring have experience from leadership situations in projects +**Beatrice D?ring** have experience from leadership situations in projects as well as in lineorganisations since 1998. During four years she was a part of a management team of five people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, motivating @@ -241,10 +241,13 @@ B 5.2 Management structure ========================== + B 5.3 Coordinator ? dont write ============================== + B 5.4 Project meetings ====================== + Project Meetings ---------------- Management Board will meet at the start of the project and two times @@ -451,5 +454,6 @@ B 5.7 Consortium ? dont write ============================= + B 5.8 Ip ? dont write ===================== \ No newline at end of file From tismer at codespeak.net Fri Oct 10 16:42:01 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 16:42:01 +0200 (MEST) Subject: [pypy-svn] rev 1669 - pypy/trunk/doc/funding Message-ID: <20031010144201.80A7C5A253@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 16:42:00 2003 New Revision: 1669 Added: pypy/trunk/doc/funding/B5.old.0_management.txt (props changed) - copied unchanged from rev 1663, pypy/trunk/doc/funding/B5.0_management.txt Log: renamed old management text From tismer at codespeak.net Fri Oct 10 17:12:21 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 17:12:21 +0200 (MEST) Subject: [pypy-svn] rev 1671 - pypy/trunk/doc/funding Message-ID: <20031010151221.174E25A253@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 17:12:20 2003 New Revision: 1671 Added: pypy/trunk/doc/funding/B5.0_manage_bea.asc Removed: pypy/trunk/doc/funding/B5.0_management.txt Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Log: ReSTified Bea's text and folded it in Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- pypy/trunk/doc/funding/B2.0.0_new_relevance.txt (original) +++ pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Fri Oct 10 17:12:20 2003 @@ -40,8 +40,8 @@ :DELETE:END -Relevance to the IST Workprogramme -++++++++++++++++++++++++++++++++++++++ +Relevance to the Objectives of the IST Priority +-------------------------------------------------- The IST thematic priority will contribute directly to realising European policies for the knowledge society as agreed at the Lisbon Added: pypy/trunk/doc/funding/B5.0_manage_bea.asc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.0_manage_bea.asc Fri Oct 10 17:12:20 2003 @@ -0,0 +1,402 @@ +:DELETE:BEGIN + + B 5.0 Project Management + +:DELETE:END + +Project Management +====================== + +PyPy as a project will be implementing an agile development +lifecycle.This choice of development method will have effects on the +way the project will be structured and managed. + +The project will have a structured project plan as is showed in this proposal (workpackages, +Gantt-chart, deliverables, quality control etc). It also means that the project process, once the +project get started, will work from a evaluate-feedback-change perspective, or so called +"learning loops" in which project management will continuosly follow up on the intital +project plan but also evaluate process, teameffectiveness, communication climate. From these +learning loops change, when necessary, will be applied throughout the process. + +To illustrate the focus on development process as well as project focus: + +Stakeholders; +- EU +- partners +- Python communities etc.etc + + +:: + + Development + process + + Sprint/ Sprint/ Sprint/ Sprint/ Sprint/ + team team team team team + + Project process + + Stakeholders; + + - EU + - partners + - Python communities etc.etc + +Both the project and the development process are based around critical +workshops, so called "sprints" that will take place on a six week cycle +throughout the project (24 months). Around these sprints input and output to +stakeholders will be structured. The arrows above symbolize the evaluation- +feedback-change system that will be implemented. + +This method will affect the role of the project management, management structure, role of +coordinator, project meetings, quality control and communication in the project in what we +have experienced to be a very constructive way. + +Our reasons for choosing this development and projectmethod are several: + +o This project has a history of 6 months in which the team succesfully implemented sprints + and agile development methods +o In this project, teammembers from 5 (?) different countries will work continuosly in separate + places, sprints will be the main forum in which the teammembers meet up and work + together in real life +o The sprints will be open for nonteammembers to participate in the development process, thus + allowing for an open and feedbackdriven process +o The sprints will be the forum in which knowledge will be shared and the transparancy within + the project organisation will be measured + +We will during the project focus on evaluating and documenting our projectmethod +and share knowledge and experience in that area as well. It is our goal that the +overall deliverables from this project will be a functioning PyPy as well as an +effective projectmethod for agile development/Open Source projects. + +On the following pages we will describe in more detail how this choice of method +will influence the way this project will be managed. + +:DELETE:BEGIN + +B 5.1 Project manager + +:DELETE:END + +Project Manager +------------------ + +The PyPy project will have a project management structure that is based upon two +resources, Jacob Hall?n as project manager and Beatrice D?ring as assisting +project manager. + +The role of the project manager is to: + +o manage the project and its scope of time, budget and deliverables +o lead the work of the management board and report to the management board +o execute decisions made in the management board +o report to the project coordinator +o support the project coordinator concerning the relations to the EU +o manage the sprints +o manage routines for quality assurance of the technical development + +The role of the assistant project manager + +o report to the project manager +o participate in reports to management board and project coordinator +o manage project administration (reports, documentation,etc) +o manage routines for sprints, quality assurance of project process, resourceallocation +o manage contact with external partners +o manage the day-to-day operations of the project (ex. executing decisions made by +o management board) +o manage the knowledge process and actively spread information to the Open Source +o community regarding methods used + +The reasons for having a structure based on a project manager and assisting +project manager are: + + both the development and the project process will recieve due attention in that the persons + chosen have expert skills in these different areas + + the project will not be exposed to the risk that a single project manager would mean + (hhmm d?ligt ? formulera om) + + a project of this size with team and stakeholders distributed in several countries needs more + project management resources + +The skills and experience of the combined project management team are as followed: + +Large scale projects: + +Jacob Hall?n have been working since 1994 with large scale development projects. He was a +consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden +(http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being +systems architect for the national bibliography system and interlibrary loan system. +Participated in international standardisation groups for search systems (Z39.50) and +interlibrary loans. + +He was also the initiator of the international standardisation effort for library services +information. Participated as the Royal Library representative in ONE-2, an EU funded project +under the Telematics for Libraries project (http://www.one-2.org) + +Since 2000, Jacob have been involved in co-founding AB Strakt (http://www.strakt.com), a +company developing workflow and document handling systems. There he works in roles as +developer, project manager, CTO and CEO. The company has grown from 3 employees to +having 12 full time employees and 6 part time employees so far. + +Connected to his work at AB Strakt, Jacob has also been active as co-founder and chairman of +the Python Business Forum, an international trade organisation for companies that use Python +as their main tool of business. The PBF has approximately 50 member organisations. +He is also the project leader for the Europython 2004 conference, to be held in +G?teborg, Sweden 9-11 June 2004. + +Beatrice D?ring have experience in large scale education projects involving working with +consortiums of three companies servicing a stakeholdergroup of about 30 recruiting +companies. These large education projects was part of a national program to solve shortages +of skilled IT-personel during the years 1998- 2000. 200 students participated in the projects +and the projects met their deliverables in that over 80% of the student were employed after the +education. The project team consisted of 7 persons working full time. As a project manager, +Beatrice was responsible for meeting project goals, meeting profit margins, leading the team +and creating strategies for stakeholder participation in the projects. She was also responsible +for reporting and documenting the project to the client. + +Since 2000 she has been involved in similar assigments, one recently finished for University +of Blekinge in which the education was directed towards recruiting companies in the +gamedevelopment industry. She has also worked as project manager for several development +projects during the time 1998-2002. + +She has also developed project methods for the companies and teams shes been working with +and have also been working with quality assurance of development projects. Her current +company, Change Maker is also working with supporting smaller companies in the +application process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience of +working with similar EU-funded projects since 1997. + +Financial tracking in projects: + +Jacob Hall?n has a widespread experience of founding and managing companies as well as +being project manager for large scale projects. This means that + +The large scale education projects that Beatrice managed had a profitmargin of 20% which +was met. The total budget for these projects was 20 million SEK. She has also recently been +involved in the prestudy, budgeting and start of a 6 year long education project in Arvika, +Sweden with a total budget of 18 million SEK. + +During her time as a manager for the education and consultdepartment in NetGuide +Scandinavia (1999-2002) she had budget and resultresponsibility. + +Leadership skills: + +Jacob Hall?n have experienced leadership challenges in different situations. Since + +Beatrice D?ring have experience from leadership situations in projects as well as in +lineorganisations since 1998. During four years she was a part of a management team of five +people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, +motivating and developing her personel. + +Beatrice employs strategies of empowerment, active listening combined with creating and +maintaining an open communication climate based on honesty and trust the achieve goals +together with her team. Beatrice have been teaching management oriented courses +(leadership, project management, communication, conflictresolving) for Learning Tree +International since 2003 in both Sweden and USA. + +:DELETE:BEGIN + +B 5.2 Management structure + +B 5.3 Coordinator ? dont write + +B 5.4 Project meetings + +:DELETE:END + + +Project Meetings +----------------------- + +Management Board will meet at the start of the project and two times per year or on an ad hoc +basis as requested. The meetings will normally be scheduled to rotate between countries of the +EU and mainly the principal contractors home base. The project manager is responsible for +the invite and agenda as well as managing the meetings. Objectives on these meeting are +tracking progress regarding workpackages, budget, timescale and strategies for involving + +stakeholders as in partners or new partners. Agenda and discussions/decisions on these +meeting will be documented and put up in the internal project web. + +Team Meetings ++++++++++++++++++++ + +The project team will meet at the "sprints" which take place on a six week cycle ( se below). +During the sprints, there will be time allotted to discuss and evaluate the project process, track +progress, discuss resource allocation, new teammembers. The project manager is responsible +for the invite and agenda as well as managing the meetings.Agenda and discussions/decisions +on these meeting will be documented and put up in the internal project web. + +Project review workshops ("learning loops") + +Every six months, as preparation for the Management Board meetings and project reviews +from the EU project office, the project management team invites the team to an evaluation +workshop, lasting for a day, in which product as well as process is being reviewed. +Riskassessment is also an important part of this workshop. This meeting could result in +proposed changes that will then be reported to the Management Board for decision. +The project manager is responsible for the invite and agenda as well as managing the +meetings.Agenda and discussions/decisions on these meeting will be documented and put up +in the internal project web. + + +"Sprint" Meetings are the key to PyPy's technical development + +Key to PyPy's technical development and research are so called "sprints". These publically +announced one-week meetings serve as an intense working forum to rapidly discuss and +implement key PyPy ideas with agile methodologies. Developers usually pair up and write +unit-tests to test the to-be-implemented features before actually adding them. The unittest-first +approach helps to understand the planned feature. Additionally, the discussion in a pair makes +sure that obviously wrong pathes of development are avoided. If something seems too hard to +test or to pin down explicitely this is taken as an indication of an underlying design problem. + +Note that more traditional approaches usually follow a model where developers work alone +and only meet to talk. Instead with sprint-driven development talking and actually +implementing resulting ideas ensures a more focused approach with fast feedback cycles. +While the free software community is successful especially because of it's open +communication model sprints are an accelerator to this process. While coding in pairs +developers educate each other which leads to a broader common understanding of the project. +During a sprint multiple pairs want to work in parallel which adds pressure on design +decisions so that independent development of components of the system is possible. Thus +sprints not only deepen the communication and understanding among researchers and +developers but they imply a working process which enhances the software design in multiple +ways. The project manager is responsible for the invite (stated goal) and agenda as well as +processmanagement during the sprints. Agenda and discussions/decisions on these sprints will +be documented and put up in the internal project web. + +With a very-high-level-language like Python rapid development in coding-sprints becomes +especially effective. A VHLL-language generally allows to focus on ideas rather than on low- +level language details. In combintation with pervasive test-driven development this eases + +high-quality rapid evolution towards the intendent goals. Obviously, the PyPy developers are +very experienced with Python and bigger applications in general. Thus the full potential of +agile methodologies is unvealed during PyPy sprints. In less than five weeks worth of +development (during four sprints) the group produced a working prototype which is a big +success not only in the eyes of its developers. + +Technical decisions ++++++++++++++++++++++++++++++ + +Major design or technical decisions are usually reached through consensus during the sprints. +If a conflict cannot be resolved there then the technical board gets the final say. The members +of the technical board are appointed by a vote of everyone who has commit rights to the +source repository. However, it is expected that design and implementation choices will +usually be determined by consensual agreement or by informal votes on the development +mailing list. This is common practice within the Python and many others free softare +communities. Also, the PyPy developers and researchers will construct few if any formal +hierarchies between them. Constantly working together with agile methodologies and the +visilibity of each individual contribution help enforce high-quality program code and good +design decisions. + +:DELETE:BEGIN + +B 5.5 Quality control of technical development + +:DELETE:END + +Quality control of technical development +---------------------------------------------- + +The PyPy project will ensure quality by a variety of means. On the grand scale, the +involvement of excellent researchers ensures that the general direction takes care of latest +insights in language research. Moreover, we will publish our research results on conferences +and to scientific and free software communities. This forms the basis to maintain a high- +quality general technical direction. + +The developers deploy agile methodologies like unittest-driven development and pair- +programming. By the end of the project we expect to have produced more than 3000 unittests +testing every aspect of the runtime system. The presence of such tests also allows to rapidly +change parts of the implementation without fear of breaking functionality elsewhere. We also +plan to release our runtime system often and thus gather additional feedback from early +adopters, developers and researchers. + +To support the open development we base all of our documents, source code and website +information on a version control system. In combintation with a notification on all changes +this ensures that all interested parties can review and react to developments. + +The PyPy developers have produced a working prototype within four one-week sprints and a +little development in between. The code and design quality of the project is already widely +accepted. There are now 400 unittests. As a consequence, Guido van Rossum, the inventor +and maintainer of today's Python, listed is as the number one project he would like to succeed. +He previously attended one of our sprints and got deeply involved with our architecture and +source code which he immediately found intuitive to work with. +Thus we believe that our choices for technical quality management are fit to meet highest +standards. + +Additional Quality procedures +++++++++++++++++++++++++++++++++++ + +The project manager will circulate a draft Quality Management plan for the project prior to +first Project Meeting and and then present it for approval at the first Meeting. It should +complement the prescribed quality approach with respect to the following aspects: + +o Document procedures, standards and control +o Issue control for documents +o Reporting procedures, frequency and format +o Communication procedures +o Corrective actions +o Exception control +o Conflict resolution +o Meeting draft agenda +o Format of meeting minutes +o Tracking system for actions +o Risk assessment +o Evaluation routines +o Specific responsibilities within the project + +:DELETE:BEGIN + +B 5.6 Communication and reporting + +:DELETE:END + +Communication and reporting +--------------------------------- + +The project process will be reported as follows: + +o monthly written status reports to the Management Board/Technical Board by the + project management team. These reports will be posted on the internal project + web for the entire team to access. + +o project review report to the EU project office. These reports are the result + of the project review workshops (every 6th month) and are produced by the + project management team. These reports will be posted on the internal project + web for the entire team to access. + +o Project evaluation report. At the end of the project, an evaluation report + will be produced in which both product, process and deliverables will be + evaluated. This report will be presented to stakeholders (consortium companies + and partners) and the EU project office. + +The technical development of PyPy is driven by open continous discussion. Many of the +involved decisions are made and verified during one-week working meetings, so called +"sprints". Members from the larger Python software community are publicly invited and have +the chance to interact and work with the PyPy developers or become one themselves. +Mailing lists, chat-sessions, Wikis and notification of program changes provide a constant +flow of information between PyPy project members and the wider community. Additionally, +groups of developers can start interactive "screen" sessions which allows sharing their +workspace and implement and communicate efficiently. Therefore conflicts out of missing or +conflicting information or due to misunderstandings will be minimized. + +Each sprint meeting is planned for by all developers. The sprint goals are usually agreed upon +before the meeting starts. This is also important to allow new developers or contributors to +join specific efforts. Sprint results are subsequently published to email and web-channels to +gather feedback and educate others about changes. + +We will present multiple reports and scientific papers on major conferences such as +EuroPython (Python's european community conference), OSCON (Open Source Convention), +PyCon (python developer conference) and to domain specific audiences such as embedded + +device developers.In a later phase of the project the PEP (Python Enhancement Proposals) +procedures may be implemented. This is the standard procedure for applying changes to the +C-implementation of Python as of today. It forces an author to clearly state the benefits of the +proposed Enhancement and provides an rationale. However, such a formal method will only +by required when the project reaches the point where users begin to rely on aspects of our +implementation. + +:DELETE:BEGIN + +B 5.7 Consortium ? dont write + +B 5.8 Ip ? dont write + +:DELETE:END Deleted: /pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.0_management.txt Fri Oct 10 17:12:20 2003 +++ (empty file) @@ -1,30 +0,0 @@ -:DELETE:BEGIN - -B.5 Project management - -DESCRIBE THE ORGANISATION, MANAGEMENT AND DECISION MAKING STRUCTURES -OF THE PROJECT. DESCRIBE THE PLAN FOR THE MANAGEMENT OF KNOWLEDGE, OF -INTELLECTUAL PROPERTY AND OF OTHER INNOVATION-RELATED ACTIVITIES -ARISING IN THE PROJECT. - -(Recommended length ? three pages) - -:DELETE:END - - -Project Management -===================== - -FIXME probably some overview-preamble here, i can't write about the -financial managment. holger. - -FIXME Jacob (holger) the financial and management interfacing with -the EU needs to be described. Then the different parts need to -be structured in a resonable way. - -Quality of the management - -Make it clear how progress will be monitored and how an effective -management structure will be put in place, with agreed lines of -communication and responsibility. Describe how corrective actions -will be initiated and how conflicts will be resolved. From ale at codespeak.net Fri Oct 10 17:42:07 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Fri, 10 Oct 2003 17:42:07 +0200 (MEST) Subject: [pypy-svn] rev 1672 - pypy/trunk/doc/funding Message-ID: <20031010154207.BF58A5A253@thoth.codespeak.net> Author: ale Date: Fri Oct 10 17:42:06 2003 New Revision: 1672 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: I am still chasing "how will pypy improve the world" Let me now what you think - I havent written that much yet, but if you dont object I will continue and fill in the arguments for the bullets and maybe some more bullets Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 10 17:42:06 2003 @@ -22,8 +22,29 @@ Potential impact =================== -Python is an extremely popular Very-High-Level, Object-Oriented, -programming language. +Thy successful execution of the PyPy project will deliver a practical usefull +implementation of a Very-High-Level, Object-Oriented, programming language. + +This will impact software development in several important ways. + + The cost of software development will deminish. + + The time to market will be reduced. + + The cost of software maintenance will be removed. + + Reduce barriers to market a product + + +The development methods of the PyPy project will prove that using Sprints, +pair programming and test driven development, results in : + + Broader understanding of the code base among developers + + Rapid developments from ideas to working code + + Sustainable project progress through unittesting + We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which From arigo at codespeak.net Fri Oct 10 17:42:43 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 17:42:43 +0200 (MEST) Subject: [pypy-svn] rev 1673 - pypy/trunk/doc/funding Message-ID: <20031010154243.374EB5A253@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 17:42:41 2003 New Revision: 1673 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Conflict resolution for Christian Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 17:42:41 2003 @@ -1,5 +1,12 @@ -B 5.0 Project Management -======================== +:DELETE:BEGIN + + B 5.0 Project Management + +:DELETE:END + +Project Management +====================== + PyPy as a project will be implementing an agile development lifecycle.This choice of development method will have effects on the way the project will be structured and managed. @@ -15,67 +22,55 @@ To illustrate the focus on development process as well as project focus: - Stakeholders; - - EU - - partners - - Python communities etc.etc - - - +Stakeholders; +- EU +- partners +- Python communities etc.etc + + +:: - - -Development -process + Development + process Sprint/ Sprint/ Sprint/ Sprint/ Sprint/ team team team team team -Project process - - - - - + Project process - - - - - - Stakeholders; - - EU - - partners - - Python communities etc.etc + Stakeholders; + + - EU + - partners + - Python communities etc.etc - Both the project and the development process are based - around critical workshops, so called "sprints" that will - take place on a six week cycle throughout the project (24 - months). Around these sprints input and output to - stakeholders will be structured. The arrows above - symbolize the evaluation-feedback-change system that will - be implemented. - +Both the project and the development process are based around critical +workshops, so called "sprints" that will take place on a six week cycle +throughout the project (24 months). Around these sprints input and output to +stakeholders will be structured. The arrows above symbolize the evaluation- +feedback-change system that will be implemented. + This method will affect the role of the project management, management structure, role of coordinator, project meetings, quality control and communication in the project in what we have experienced to be a very -constructive way. Our reasons for choosing this development and -projectmethod are several: +constructive way. -?This project has a history of 6 months in which the team succesfully - implemented sprints and agile development methods +Our reasons for choosing this development and projectmethod are several: -?In this project, teammembers from 5 (?) different countries will work - continuosly in separate places, sprints will be the main forum in - which the teammembers meet up and work together in real life - -?The sprints will be open for nonteammembers to participate in the - development process, thus allowing for an open and feedbackdriven - process +o This project has a history of 6 months in which the team succesfully + implemented sprints and agile development methods -?The sprints will be the forum in which knowledge will be shared and - the transparancy within the project organisation will be measured +o In this project, teammembers from 5 (?) different countries will work + continuously in separate places, sprints will be the main forum in + which the teammembers meet up and work together in real life + +o The sprints will be open for nonteammembers to participate in the + development process, thus allowing for an open and feedbackdriven + process + +o The sprints will be the forum in which knowledge will be shared and + the transparancy within the project organisation will be measured We will during the project focus on evaluating and documenting our projectmethod and share knowledge and experience in that area as @@ -85,49 +80,60 @@ On the following pages we will describe in more detail how this choice of method will influence the way this project will be managed. - + +:DELETE:BEGIN B 5.1 Project manager -===================== + +:DELETE:END + +Project Manager +------------------ + The PyPy project will have a project management structure that is based upon two resources, Jacob Hall?n as project manager and Beatrice D?ring as assisting project manager. -The role of the project manager is to: - manage the project and its scope of time, budget and deliverables - lead the work of the management board and report to the management board - execute decisions made in the management board - report to the project coordinator - support the project coordinator concerning the relations to the EU - manage the sprints - manage routines for quality assurance of the technical development - -The role of the assistant project manager - report to the project manager - participate in reports to management board and project coordinator - manage project administration (reports, documentation,etc) - manage routines for sprints, quality assurance of project - process, resourceallocation manage contact with external partners - manage the day-to-day operations of the project (ex. executing - decisions made by management board) manage the knowledge process - and actively spread information to the Open Source community - regarding methods used - +The role of the project manager is to: + +o manage the project and its scope of time, budget and deliverables +o lead the work of the management board and report to the management board +o execute decisions made in the management board +o report to the project coordinator +o support the project coordinator concerning the relations to the EU +o manage the sprints +o manage routines for quality assurance of the technical development + +The role of the assistant project manager is to: + +o report to the project manager +o participate in reports to management board and project coordinator +o manage project administration (reports, documentation,etc) +o manage routines for sprints, quality assurance of project process, resourceallocation +o manage contact with external partners +o manage the day-to-day operations of the project (ex. executing decisions made by +o management board) +o manage the knowledge process and actively spread information to the Open Source +o community regarding methods used + The reasons for having a structure based on a project manager and assisting project manager are: - - both the development and the project process will recieve due - attention in that the persons chosen have expert skills in these - different areas the project will not be exposed to the risk that - a single project manager would mean (hhmm d?ligt ? formulera om) - a project of this size with team and stakeholders distributed in - several countries needs more project management resources + + both the development and the project process will recieve due attention + in that the persons chosen have expert skills in these different areas + + the project will not be exposed to the risk that a single project manager would mean + (hhmm d?ligt ? formulera om) + + a project of this size with team and stakeholders distributed in several + countries needs more project management resources The skills and experience of the combined project management team are -as followed: +as follows: -Large scale projects: ---------------------- +Large scale projects ++++++++++++++++++++++ + **Jacob Hall?n** has been working since 1994 with large scale development projects. He was a consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden (http://www.libris.kb.se) in @@ -181,8 +187,9 @@ process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience of working with similar EU-funded projects since 1997. -Financial tracking in projects: -------------------------------- +Financial tracking in projects ++++++++++++++++++++++++++++++++ + **Jacob Hall?n** has a widespread experience of founding and managing companies as well as being project manager for large scale projects. He has also developed several accounting programs. When @@ -201,8 +208,9 @@ department in NetGuide Scandinavia (1999-2002) she had budget and result responsibility. -Leadership skills: ------------------- +Leadership skills +++++++++++++++++++ + **Jacob Hall?n** has experienced leadership challenges in different situations. In his role as an officer in the reserve of the Swedish army he has been deputy rifle platoon leader in the Swedsh UN forces @@ -220,7 +228,7 @@ members of the consortium on what sort of changes should be required, wanted or tolerated in the new system. -AT AB Strakt, Jacob Hall?n started out managing the company but +At AB Strakt, Jacob Hall?n started out managing the company but changed his role to Chief Technical Officer, after successfully recruiting a suitable CEO as replacement. Jacob enjoys managing technical processes more than general corporate management. @@ -237,19 +245,21 @@ have been teaching management oriented courses (leadership, project management, communication, conflictresolving) for Learning Tree International since 2003 in both Sweden and USA. - + +:DELETE:BEGIN B 5.2 Management structure -========================== B 5.3 Coordinator ? dont write -============================== B 5.4 Project meetings -====================== -Project Meetings ----------------- +:DELETE:END + + +Project Meetings +----------------------- + Management Board will meet at the start of the project and two times per year or on an ad hoc basis as requested. The meetings will normally be scheduled to rotate between countries of the EU and mainly @@ -262,7 +272,8 @@ in the internal project web. Team Meetings -------------- ++++++++++++++++++++ + The project team will meet at the "sprints" which take place on a six week cycle ( se below). During the sprints, there will be time allotted to discuss and evaluate the project process, track progress, @@ -272,7 +283,8 @@ documented and put up in the internal project web. Project review workshops ("learning loops") -------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++ + Every six months, as preparation for the Management Board meetings and project reviews from the EU project office, the project management team invites the team to an evaluation workshop, lasting for a day, in @@ -286,7 +298,8 @@ "Sprint" Meetings are the key to PyPy's technical development -------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Key to PyPy's technical development and research are so called "sprints". These publically announced one-week meetings serve as an intense working forum to rapidly discuss and implement key PyPy ideas @@ -329,7 +342,8 @@ developers. Technical decisions -------------------- ++++++++++++++++++++ + Major design or technical decisions are usually reached through consensus during the sprints. If a conflict cannot be resolved there then the technical board gets the final say. The members of the @@ -344,8 +358,15 @@ individual contribution help enforce high-quality program code and good design decisions. +:DELETE:BEGIN + B 5.5 Quality control of technical development -============================================== + +:DELETE:END + +Quality control of technical development +---------------------------------------------- + The PyPy project will ensure quality by a variety of means. On the grand scale, the involvement of excellent researchers ensures that the general direction takes care of latest insights in language @@ -379,46 +400,54 @@ choices for technical quality management are fit to meet highest standards. -Additional Quality procedures ------------------------------ +Additional Quality procedures +++++++++++++++++++++++++++++++++++ + The project manager will circulate a draft Quality Management plan for the project prior to first Project Meeting and and then present it for approval at the first Meeting. It should complement the prescribed quality approach with respect to the following aspects: - Document procedures, standards and control - Issue control for documents - Reporting procedures, frequency and format - Communication procedures - Corrective actions - Exception control - Conflict resolution - Meeting draft agenda - Format of meeting minutes - Tracking system for actions - Risk assessment - Evaluation routines - Specific responsibilities within the project +o Document procedures, standards and control +o Issue control for documents +o Reporting procedures, frequency and format +o Communication procedures +o Corrective actions +o Exception control +o Conflict resolution +o Meeting draft agenda +o Format of meeting minutes +o Tracking system for actions +o Risk assessment +o Evaluation routines +o Specific responsibilities within the project +:DELETE:BEGIN B 5.6 Communication and reporting -================================= + +:DELETE:END + +Communication and reporting +--------------------------------- + The project process will be reported as follows: - Monthly written status reports to the Management Board/Technical - Board by the project management team. These reports will be - posted on the internal project web for the entire team to access. - project review report to the EU project office. These reports are - the result of the project review workshops (every 6th month) and - are produced by the project management team. These reports will - be posted on the internal project web for the entire team to - access. - - Project evaluation report. At the end of the project, an - evaluation report will be produced in which both product, process - and deliverables will be evaluated. This report will be presented - to stakeholders (consortium companies and partners) and the EU - project office. +o Monthly written status reports to the Management Board/Technical + Board by the project management team. These reports will be + posted on the internal project web for the entire team to access. + +o Project review report to the EU project office. These reports are + the result of the project review workshops (every 6th month) and + are produced by the project management team. These reports will + be posted on the internal project web for the entire team to + access. + +o Project evaluation report. At the end of the project, an + evaluation report will be produced in which both product, process + and deliverables will be evaluated. This report will be presented + to stakeholders (consortium companies and partners) and the EU + project office. The technical development of PyPy is driven by open continous discussion. Many of the involved decisions are made and verified @@ -451,9 +480,10 @@ method will only by required when the project reaches the point where users begin to rely on aspects of our implementation. +:DELETE:BEGIN B 5.7 Consortium ? dont write -============================= B 5.8 Ip ? dont write -===================== \ No newline at end of file + +:DELETE:END From ale at codespeak.net Fri Oct 10 17:50:39 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Fri, 10 Oct 2003 17:50:39 +0200 (MEST) Subject: [pypy-svn] rev 1674 - pypy/trunk/doc/funding Message-ID: <20031010155039.7A4665A253@thoth.codespeak.net> Author: ale Date: Fri Oct 10 17:50:38 2003 New Revision: 1674 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: Some stupid, but important typos Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 10 17:50:38 2003 @@ -22,8 +22,9 @@ Potential impact =================== -Thy successful execution of the PyPy project will deliver a practical usefull -implementation of a Very-High-Level, Object-Oriented, programming language. +The successful execution of the PyPy project will deliver a practical usefull +implementation of a Very-High-Level, Object-Oriented, Open Source programming +language. This will impact software development in several important ways. @@ -31,9 +32,9 @@ The time to market will be reduced. - The cost of software maintenance will be removed. + The cost of software maintenance will be reduced. - Reduce barriers to market a product + Reduce barriers to market a product. The development methods of the PyPy project will prove that using Sprints, From mwh at codespeak.net Fri Oct 10 17:51:35 2003 From: mwh at codespeak.net (mwh at codespeak.net) Date: Fri, 10 Oct 2003 17:51:35 +0200 (MEST) Subject: [pypy-svn] rev 1675 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031010155135.3B0295A253@thoth.codespeak.net> Author: mwh Date: Fri Oct 10 17:51:34 2003 New Revision: 1675 Added: pypy/trunk/src/pypy/translator/test/buildclisp.py (contents, props changed) pypy/trunk/src/pypy/translator/test/test_cltrans.py (contents, props changed) Modified: pypy/trunk/src/pypy/translator/gencl.py Log: tests and improvements from sanxiyn, while he has svn auth problems. the test is currently disabled because it fails when clisp isn't installed. this should be shallow to change into a skip in that case. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Fri Oct 10 17:51:34 2003 @@ -67,45 +67,14 @@ print "(setq", var, init, ")" self.emit_block(branch.target) def emit_conditional_branch(self, branch): - # XXX: Fix this - print "(if (not (zerop", self.str(branch.condition), "))" + print "(if" + self.emit_truth_test(branch.condition) self.emit_branch(branch.ifbranch) self.emit_branch(branch.elsebranch) print ")" def emit_end_branch(self, branch): retval = self.str(branch.returnvalue) print "(return", retval, ")" - -def my_gcd(a, b): - r = a % b - while r: - a = b - b = r - r = a % b - return b - -import sys -from pypy.objspace.flow import Space -from vpath.adapter.process import exec_cmd -from cStringIO import StringIO - -def test(func, *args): - fun = Space().build_flow(func) - gen = GenCL(fun) - out = StringIO() - sys.stdout = out - gen.emit() - sys.stdout = sys.__stdout__ - fp = file("test.lisp", "w") - fp.write(out.getvalue()) - print >>fp, "(write (", fun.functionname, - for arg in args: - print >>fp, str(arg), - print >>fp, "))" - fp.close() - output = exec_cmd("clisp test.lisp") - print "Python:", func(*args) - print "Lisp:", output - -if __name__ == "__main__": - test(my_gcd, 96, 64) + def emit_truth_test(self, obj): + # XXX: Fix this + print "(not (zerop", self.str(obj), "))" Added: pypy/trunk/src/pypy/translator/test/buildclisp.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/buildclisp.py Fri Oct 10 17:51:34 2003 @@ -0,0 +1,36 @@ +import autopath + +import sys +from cStringIO import StringIO +from pypy.objspace.flow import Space +from pypy.translator.gencl import GenCL +from vpath.adapter.process import exec_cmd + +def readlisp(s): + # For now, let's return int only + return int(s) + +def make_cl_func(func, path): + fun = Space().build_flow(func) + gen = GenCL(fun) + out = StringIO() + sys.stdout = out + gen.emit() + sys.stdout = sys.__stdout__ + fp = path.join("test.lisp") + i = 0 + while fp.exists(): + fp = path.join("test%d.lisp" % i) + i += 1 + fp.write(out.getvalue()) + fname = fp.path + def _(*args): + fp = file(fname, "a") + print >>fp, "(write (", fun.functionname, + for arg in args: + print >>fp, str(arg), + print >>fp, "))" + fp.close() + output = exec_cmd("clisp %s" % fname) + return readlisp(output) + return _ Added: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Fri Oct 10 17:51:34 2003 @@ -0,0 +1,24 @@ +import autopath +from pypy.tool import test +from pypy.tool.udir import udir +from pypy.translator.test.buildclisp import make_cl_func + +class GenCLTestCase(test.IntTestCase): + + #___________________________________ + def my_gcd(a, b): + r = a % b + while r: + a = b + b = r + r = a % b + return b + def XXXtest_gcd(self): + # disabled because it's rude to fail just because the clisp + # common lisp implementation isn't installed. + # (will arrange to skip the test in that case eventually) -- mwh + cl_gcd = make_cl_func(self.my_gcd, udir) + self.assertEquals(cl_gcd(96, 64), 32) + +if __name__ == '__main__': + test.main() From arigo at codespeak.net Fri Oct 10 18:01:13 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 18:01:13 +0200 (MEST) Subject: [pypy-svn] rev 1676 - pypy/trunk/doc/funding Message-ID: <20031010160113.C66D95A253@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 18:01:12 2003 New Revision: 1676 Removed: pypy/trunk/doc/funding/B5.0_manage_bea.asc pypy/trunk/doc/funding/B5.1_project_manager.txt pypy/trunk/doc/funding/B5.4_meetings.txt pypy/trunk/doc/funding/B5.5_quality.txt pypy/trunk/doc/funding/B5.6_communication.txt pypy/trunk/doc/funding/B5.8_ip.txt Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt pypy/trunk/doc/funding/B5.2_management_structure.txt Log: B5 cleanup Deleted: /pypy/trunk/doc/funding/B5.0_manage_bea.asc ============================================================================== --- /pypy/trunk/doc/funding/B5.0_manage_bea.asc Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,402 +0,0 @@ -:DELETE:BEGIN - - B 5.0 Project Management - -:DELETE:END - -Project Management -====================== - -PyPy as a project will be implementing an agile development -lifecycle.This choice of development method will have effects on the -way the project will be structured and managed. - -The project will have a structured project plan as is showed in this proposal (workpackages, -Gantt-chart, deliverables, quality control etc). It also means that the project process, once the -project get started, will work from a evaluate-feedback-change perspective, or so called -"learning loops" in which project management will continuosly follow up on the intital -project plan but also evaluate process, teameffectiveness, communication climate. From these -learning loops change, when necessary, will be applied throughout the process. - -To illustrate the focus on development process as well as project focus: - -Stakeholders; -- EU -- partners -- Python communities etc.etc - - -:: - - Development - process - - Sprint/ Sprint/ Sprint/ Sprint/ Sprint/ - team team team team team - - Project process - - Stakeholders; - - - EU - - partners - - Python communities etc.etc - -Both the project and the development process are based around critical -workshops, so called "sprints" that will take place on a six week cycle -throughout the project (24 months). Around these sprints input and output to -stakeholders will be structured. The arrows above symbolize the evaluation- -feedback-change system that will be implemented. - -This method will affect the role of the project management, management structure, role of -coordinator, project meetings, quality control and communication in the project in what we -have experienced to be a very constructive way. - -Our reasons for choosing this development and projectmethod are several: - -o This project has a history of 6 months in which the team succesfully implemented sprints - and agile development methods -o In this project, teammembers from 5 (?) different countries will work continuosly in separate - places, sprints will be the main forum in which the teammembers meet up and work - together in real life -o The sprints will be open for nonteammembers to participate in the development process, thus - allowing for an open and feedbackdriven process -o The sprints will be the forum in which knowledge will be shared and the transparancy within - the project organisation will be measured - -We will during the project focus on evaluating and documenting our projectmethod -and share knowledge and experience in that area as well. It is our goal that the -overall deliverables from this project will be a functioning PyPy as well as an -effective projectmethod for agile development/Open Source projects. - -On the following pages we will describe in more detail how this choice of method -will influence the way this project will be managed. - -:DELETE:BEGIN - -B 5.1 Project manager - -:DELETE:END - -Project Manager ------------------- - -The PyPy project will have a project management structure that is based upon two -resources, Jacob Hall?n as project manager and Beatrice D?ring as assisting -project manager. - -The role of the project manager is to: - -o manage the project and its scope of time, budget and deliverables -o lead the work of the management board and report to the management board -o execute decisions made in the management board -o report to the project coordinator -o support the project coordinator concerning the relations to the EU -o manage the sprints -o manage routines for quality assurance of the technical development - -The role of the assistant project manager - -o report to the project manager -o participate in reports to management board and project coordinator -o manage project administration (reports, documentation,etc) -o manage routines for sprints, quality assurance of project process, resourceallocation -o manage contact with external partners -o manage the day-to-day operations of the project (ex. executing decisions made by -o management board) -o manage the knowledge process and actively spread information to the Open Source -o community regarding methods used - -The reasons for having a structure based on a project manager and assisting -project manager are: - - both the development and the project process will recieve due attention in that the persons - chosen have expert skills in these different areas - - the project will not be exposed to the risk that a single project manager would mean - (hhmm d?ligt ? formulera om) - - a project of this size with team and stakeholders distributed in several countries needs more - project management resources - -The skills and experience of the combined project management team are as followed: - -Large scale projects: - -Jacob Hall?n have been working since 1994 with large scale development projects. He was a -consultant for, and later employee of, the LIBRIS Department of the Royal Library of Sweden -(http://www.libris.kb.se) in the role of Technical Project Manager, with main focus on being -systems architect for the national bibliography system and interlibrary loan system. -Participated in international standardisation groups for search systems (Z39.50) and -interlibrary loans. - -He was also the initiator of the international standardisation effort for library services -information. Participated as the Royal Library representative in ONE-2, an EU funded project -under the Telematics for Libraries project (http://www.one-2.org) - -Since 2000, Jacob have been involved in co-founding AB Strakt (http://www.strakt.com), a -company developing workflow and document handling systems. There he works in roles as -developer, project manager, CTO and CEO. The company has grown from 3 employees to -having 12 full time employees and 6 part time employees so far. - -Connected to his work at AB Strakt, Jacob has also been active as co-founder and chairman of -the Python Business Forum, an international trade organisation for companies that use Python -as their main tool of business. The PBF has approximately 50 member organisations. -He is also the project leader for the Europython 2004 conference, to be held in -G?teborg, Sweden 9-11 June 2004. - -Beatrice D?ring have experience in large scale education projects involving working with -consortiums of three companies servicing a stakeholdergroup of about 30 recruiting -companies. These large education projects was part of a national program to solve shortages -of skilled IT-personel during the years 1998- 2000. 200 students participated in the projects -and the projects met their deliverables in that over 80% of the student were employed after the -education. The project team consisted of 7 persons working full time. As a project manager, -Beatrice was responsible for meeting project goals, meeting profit margins, leading the team -and creating strategies for stakeholder participation in the projects. She was also responsible -for reporting and documenting the project to the client. - -Since 2000 she has been involved in similar assigments, one recently finished for University -of Blekinge in which the education was directed towards recruiting companies in the -gamedevelopment industry. She has also worked as project manager for several development -projects during the time 1998-2002. - -She has also developed project methods for the companies and teams shes been working with -and have also been working with quality assurance of development projects. Her current -company, Change Maker is also working with supporting smaller companies in the -application process for the EU Framework 3 (V?xtkraft M?l 3) and has a experience of -working with similar EU-funded projects since 1997. - -Financial tracking in projects: - -Jacob Hall?n has a widespread experience of founding and managing companies as well as -being project manager for large scale projects. This means that - -The large scale education projects that Beatrice managed had a profitmargin of 20% which -was met. The total budget for these projects was 20 million SEK. She has also recently been -involved in the prestudy, budgeting and start of a 6 year long education project in Arvika, -Sweden with a total budget of 18 million SEK. - -During her time as a manager for the education and consultdepartment in NetGuide -Scandinavia (1999-2002) she had budget and resultresponsibility. - -Leadership skills: - -Jacob Hall?n have experienced leadership challenges in different situations. Since - -Beatrice D?ring have experience from leadership situations in projects as well as in -lineorganisations since 1998. During four years she was a part of a management team of five -people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, -motivating and developing her personel. - -Beatrice employs strategies of empowerment, active listening combined with creating and -maintaining an open communication climate based on honesty and trust the achieve goals -together with her team. Beatrice have been teaching management oriented courses -(leadership, project management, communication, conflictresolving) for Learning Tree -International since 2003 in both Sweden and USA. - -:DELETE:BEGIN - -B 5.2 Management structure - -B 5.3 Coordinator ? dont write - -B 5.4 Project meetings - -:DELETE:END - - -Project Meetings ------------------------ - -Management Board will meet at the start of the project and two times per year or on an ad hoc -basis as requested. The meetings will normally be scheduled to rotate between countries of the -EU and mainly the principal contractors home base. The project manager is responsible for -the invite and agenda as well as managing the meetings. Objectives on these meeting are -tracking progress regarding workpackages, budget, timescale and strategies for involving - -stakeholders as in partners or new partners. Agenda and discussions/decisions on these -meeting will be documented and put up in the internal project web. - -Team Meetings -+++++++++++++++++++ - -The project team will meet at the "sprints" which take place on a six week cycle ( se below). -During the sprints, there will be time allotted to discuss and evaluate the project process, track -progress, discuss resource allocation, new teammembers. The project manager is responsible -for the invite and agenda as well as managing the meetings.Agenda and discussions/decisions -on these meeting will be documented and put up in the internal project web. - -Project review workshops ("learning loops") - -Every six months, as preparation for the Management Board meetings and project reviews -from the EU project office, the project management team invites the team to an evaluation -workshop, lasting for a day, in which product as well as process is being reviewed. -Riskassessment is also an important part of this workshop. This meeting could result in -proposed changes that will then be reported to the Management Board for decision. -The project manager is responsible for the invite and agenda as well as managing the -meetings.Agenda and discussions/decisions on these meeting will be documented and put up -in the internal project web. - - -"Sprint" Meetings are the key to PyPy's technical development - -Key to PyPy's technical development and research are so called "sprints". These publically -announced one-week meetings serve as an intense working forum to rapidly discuss and -implement key PyPy ideas with agile methodologies. Developers usually pair up and write -unit-tests to test the to-be-implemented features before actually adding them. The unittest-first -approach helps to understand the planned feature. Additionally, the discussion in a pair makes -sure that obviously wrong pathes of development are avoided. If something seems too hard to -test or to pin down explicitely this is taken as an indication of an underlying design problem. - -Note that more traditional approaches usually follow a model where developers work alone -and only meet to talk. Instead with sprint-driven development talking and actually -implementing resulting ideas ensures a more focused approach with fast feedback cycles. -While the free software community is successful especially because of it's open -communication model sprints are an accelerator to this process. While coding in pairs -developers educate each other which leads to a broader common understanding of the project. -During a sprint multiple pairs want to work in parallel which adds pressure on design -decisions so that independent development of components of the system is possible. Thus -sprints not only deepen the communication and understanding among researchers and -developers but they imply a working process which enhances the software design in multiple -ways. The project manager is responsible for the invite (stated goal) and agenda as well as -processmanagement during the sprints. Agenda and discussions/decisions on these sprints will -be documented and put up in the internal project web. - -With a very-high-level-language like Python rapid development in coding-sprints becomes -especially effective. A VHLL-language generally allows to focus on ideas rather than on low- -level language details. In combintation with pervasive test-driven development this eases - -high-quality rapid evolution towards the intendent goals. Obviously, the PyPy developers are -very experienced with Python and bigger applications in general. Thus the full potential of -agile methodologies is unvealed during PyPy sprints. In less than five weeks worth of -development (during four sprints) the group produced a working prototype which is a big -success not only in the eyes of its developers. - -Technical decisions -+++++++++++++++++++++++++++++ - -Major design or technical decisions are usually reached through consensus during the sprints. -If a conflict cannot be resolved there then the technical board gets the final say. The members -of the technical board are appointed by a vote of everyone who has commit rights to the -source repository. However, it is expected that design and implementation choices will -usually be determined by consensual agreement or by informal votes on the development -mailing list. This is common practice within the Python and many others free softare -communities. Also, the PyPy developers and researchers will construct few if any formal -hierarchies between them. Constantly working together with agile methodologies and the -visilibity of each individual contribution help enforce high-quality program code and good -design decisions. - -:DELETE:BEGIN - -B 5.5 Quality control of technical development - -:DELETE:END - -Quality control of technical development ----------------------------------------------- - -The PyPy project will ensure quality by a variety of means. On the grand scale, the -involvement of excellent researchers ensures that the general direction takes care of latest -insights in language research. Moreover, we will publish our research results on conferences -and to scientific and free software communities. This forms the basis to maintain a high- -quality general technical direction. - -The developers deploy agile methodologies like unittest-driven development and pair- -programming. By the end of the project we expect to have produced more than 3000 unittests -testing every aspect of the runtime system. The presence of such tests also allows to rapidly -change parts of the implementation without fear of breaking functionality elsewhere. We also -plan to release our runtime system often and thus gather additional feedback from early -adopters, developers and researchers. - -To support the open development we base all of our documents, source code and website -information on a version control system. In combintation with a notification on all changes -this ensures that all interested parties can review and react to developments. - -The PyPy developers have produced a working prototype within four one-week sprints and a -little development in between. The code and design quality of the project is already widely -accepted. There are now 400 unittests. As a consequence, Guido van Rossum, the inventor -and maintainer of today's Python, listed is as the number one project he would like to succeed. -He previously attended one of our sprints and got deeply involved with our architecture and -source code which he immediately found intuitive to work with. -Thus we believe that our choices for technical quality management are fit to meet highest -standards. - -Additional Quality procedures -++++++++++++++++++++++++++++++++++ - -The project manager will circulate a draft Quality Management plan for the project prior to -first Project Meeting and and then present it for approval at the first Meeting. It should -complement the prescribed quality approach with respect to the following aspects: - -o Document procedures, standards and control -o Issue control for documents -o Reporting procedures, frequency and format -o Communication procedures -o Corrective actions -o Exception control -o Conflict resolution -o Meeting draft agenda -o Format of meeting minutes -o Tracking system for actions -o Risk assessment -o Evaluation routines -o Specific responsibilities within the project - -:DELETE:BEGIN - -B 5.6 Communication and reporting - -:DELETE:END - -Communication and reporting ---------------------------------- - -The project process will be reported as follows: - -o monthly written status reports to the Management Board/Technical Board by the - project management team. These reports will be posted on the internal project - web for the entire team to access. - -o project review report to the EU project office. These reports are the result - of the project review workshops (every 6th month) and are produced by the - project management team. These reports will be posted on the internal project - web for the entire team to access. - -o Project evaluation report. At the end of the project, an evaluation report - will be produced in which both product, process and deliverables will be - evaluated. This report will be presented to stakeholders (consortium companies - and partners) and the EU project office. - -The technical development of PyPy is driven by open continous discussion. Many of the -involved decisions are made and verified during one-week working meetings, so called -"sprints". Members from the larger Python software community are publicly invited and have -the chance to interact and work with the PyPy developers or become one themselves. -Mailing lists, chat-sessions, Wikis and notification of program changes provide a constant -flow of information between PyPy project members and the wider community. Additionally, -groups of developers can start interactive "screen" sessions which allows sharing their -workspace and implement and communicate efficiently. Therefore conflicts out of missing or -conflicting information or due to misunderstandings will be minimized. - -Each sprint meeting is planned for by all developers. The sprint goals are usually agreed upon -before the meeting starts. This is also important to allow new developers or contributors to -join specific efforts. Sprint results are subsequently published to email and web-channels to -gather feedback and educate others about changes. - -We will present multiple reports and scientific papers on major conferences such as -EuroPython (Python's european community conference), OSCON (Open Source Convention), -PyCon (python developer conference) and to domain specific audiences such as embedded - -device developers.In a later phase of the project the PEP (Python Enhancement Proposals) -procedures may be implemented. This is the standard procedure for applying changes to the -C-implementation of Python as of today. It forces an author to clearly state the benefits of the -proposed Enhancement and provides an rationale. However, such a formal method will only -by required when the project reaches the point where users begin to rely on aspects of our -implementation. - -:DELETE:BEGIN - -B 5.7 Consortium ? dont write - -B 5.8 Ip ? dont write - -:DELETE:END Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 18:01:12 2003 @@ -484,6 +484,52 @@ B 5.7 Consortium ? dont write -B 5.8 Ip ? dont write +B 5.8 Ip :DELETE:END + +Management of Knowledge and Intellectual Property +-------------------------------------------------- + +Every contributor is fully responsible for not introducing program code +which might infringe third party copyright or patents for that matter. +Every contributor agrees to license his contributions under a MIT-style +license (approved by the Open Source Initiative):: + + The MIT License + + Copyright (c) + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +The public availability of PyPy's source code at all times on the basis +on such an open and commercially exploitable license stipulates exchange +of ideas, contribution to the project and reusing all parts of PyPy from +the start. + +In return, this provides the developers with fast feedback and +improvements with respect to their current developments. At the heart of +a free software community lies open communication, the free flow of +information and organizing shared interests. The PyPy project is already +fully involved and based on these principles. We also believe that for +a language runtime system like PyPy a free license is of vital +importance to reach wide deployment and recognition. Such a license is +also a neccessity to allow PyPy to become a reference implementation of +the Python language specification. Deleted: /pypy/trunk/doc/funding/B5.1_project_manager.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.1_project_manager.txt Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,78 +0,0 @@ -FIXME JACOB -B.5.1 Project Manager - -Every project must have a Project Manager. He will be responsible for -the Management of the Project and execution of the contract. He -is appointed by the Co-ordinator and chairs the Management -Meetings. He approves all outputs and reports, is the prime -external interface and also may be the Technical Director (if one -is deemed necessary). - - -There is some confusion as to the role of the Project Manager. This is -not an administrative chore. A Project Manager will require some -administrative support, but that is far from the essence of the job. -The administrative functions such as status tracking, financial -reporting, change control and project library maintenance are really a -minor part of the overall job. - -Project management activities - -Specific targeted research projects will also include an overall -management structure. Over and above the technical management of -individual work packages, an appropriate management framework linking -together all the project components and maintaining communications -with the Commission will be needed. - -Project management will include: - -? co-ordination of the technical activities of the project; - -? the overall legal, contractual, ethical, financial and administrative - management of the project; - -? preparing, updating and managing the consortium agreement between - the participants; - -? co-ordination of knowledge management and other innovation-related - activities; - -? overseeing the promotion of gender equality in the project; - -? overseeing science and society issues, related to the research - activities conducted within the project; - -? obtaining audit certificates (as and when required) by each of the - participants; - -? bank guarantees for SMEs (if applicable). - -Successful Project Management of a FrameWorkprogram Project -requires various skills and knowledge. In my view it requires a -person with the following attributes ? - - ? Good appreciation of the relevant business area - - ? Participation in a previous Framework project - - ? Knowledge of Framework procedures - - ? Good interpersonal skills - - ? Well organised and systematic in own work - - ? Good knowledge of ISO 9001 - - ? Good knowledge of English - - ? Some knowledge of project technical area - - ? Some knowledge of financial management - -Project Management is a combination of all of the above skills. Extra -strength in some areas could compensate for weakness in others. -Remember this function includes legal responsibility aspects and thus -keeping of good records is essential. Any telephone calls and -agreements, especially with the Project Officer should be minuted -and/or confirmed in writing, at least by email. - Modified: pypy/trunk/doc/funding/B5.2_management_structure.txt ============================================================================== --- pypy/trunk/doc/funding/B5.2_management_structure.txt (original) +++ pypy/trunk/doc/funding/B5.2_management_structure.txt Fri Oct 10 18:01:12 2003 @@ -1,3 +1,5 @@ +FIXME WRITE ME !! and stick the result into B5.0 + Management Structure ==================== Deleted: /pypy/trunk/doc/funding/B5.4_meetings.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.4_meetings.txt Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,59 +0,0 @@ -Project Meetings -================ - -The Management Board will meet at the start of the project and two -times per year or on an ad hoc basis as requested. The meetings will -normally be scheduled to rotate between countries of the EU and mainly -the principal contractors home base. - -FIXME Extend? - - -"Sprint" Meetings are the key to PyPy's technical development -------------------------------------------------------------- - -Key to PyPy's technical development and research are so called "sprints". These publically -announced one-week meetings serve as an intense working forum to rapidly discuss -and implement key PyPy ideas with agile methodologies. Developers usually pair -up and write unit-tests to test the to-be-implemented features before actually adding -them. The unittest-first approach helps to understand the planned feature. Additionally, -the discussion in a pair makes sure that obviously wrong pathes of development are -avoided. If something seems too hard to test or to pin down explicitely this is -taken as an indication of an underlying design problem. - -Note that more traditional approaches usually follow a model where developers work alone -and only meet to talk. Instead with sprint-driven development talking and actually -implementing resulting ideas ensures a more focused approach with fast feedback cycles. -While the free software community is successful especially because of it's open -communication model sprints are an accelerator to this process. While coding in pairs -developers educate each other which leads to a broader common understanding of the project. -During a sprint multiple pairs want to work in parallel which adds pressure on design -decisions so that independent development of components of the system is possible. -Thus sprints not only deepen the communication and understanding among researchers and -developers but they imply a working process which enhances the software design in multiple ways. - -With a very-high-level-language like Python rapid development in coding-sprints becomes -especially effective. A VHLL-language generally allows to focus on ideas rather than on low-level -language details. In combintation with pervasive test-driven development this eases high-quality -rapid evolution towards the intendent goals. Obviously, the PyPy developers are very experienced -with Python and bigger applications in general. Thus the full potential of agile methodologies is -unvealed during PyPy sprints. In less than five weeks worth of development (during four sprints) -the group produced a working prototype which is a big success not only in the eyes of its -developers. - - -Technical decisions -------------------- - -Major design or technical decisions are usually reached through consensus -during the sprints. If a conflict cannot be resolved there then the technical -board gets the final say. The members of the technical board are appointed by -a vote of everyone who has commit rights to the source repository. However, -it is expected that design and implementation choices will usually be -determined by consensual agreement or by informal votes on the development -mailing list. This is common practice within the Python and many others free -softare communities. Also, the PyPy developers and researchers will construct -few if any formal hierarchies between them. Constantly working together with -agile methodologies and the visilibity of each individual contribution help -enforce high-quality program code and good design decisions. - Deleted: /pypy/trunk/doc/funding/B5.5_quality.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.5_quality.txt Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,56 +0,0 @@ - -Quality control of technical development ----------------------------------------- - -The PyPy project will ensure quality by a variety of means. On the grand -scale, the involvement of excellent researchers ensures that the general -direction takes care of latest insights in language research. Moreover, -we will publish our research results on conferences and to scientific -and free software communities. This forms the basis to maintain a high-quality -general technical direction. - -The developers deploy agile methodologies like unittest-driven development -and pair-programming. By the end of the project we expect to have produced -more than 3000 unittests testing every aspect of the runtime system. The -presence of such tests also allows to rapidly change parts of the implementation -without fear of breaking functionality elsewhere. We also plan to release -our runtime system often and thus gather additional feedback from early -adopters, developers and researchers. - -To support the open development we base all of our documents, source -code and website information on a version control system. In combintation -with a notification on all changes this ensures that all interested parties -can review and react to developments. - -The PyPy developers have produced a working prototype within four one-week -sprints and a little development in between. The code and design quality -of the project is already widely accepted. There are now 400 unittests. -As a consequence, Guido van Rossum, the inventor and maintainer of today's -Python, listed is as the number one project he would like to succeed. He -previously attended one of our sprints and got deeply involved with our -architecture and source code which he immediately found intuitive to work with. - -Thus we believe that our choices for technical quality management are fit -to meet highest standards. - - - -Additional Quality procedures ------------------------------- - -The project manager will circulate a draft Quality Management plan -for the project prior to first Project Meeting and and then present it -for approval at the first Meeting. It should complement the prescribed -quality approach with respect to the following aspects: - - ? Document procedures, standards and control - ? Issue control for documents - ? Reporting procedures, frequency and format - ? Communication procedures - ? Corrective actions - ? Exception control - ? Conflict resolution - ? Meeting draft agenda - ? Format of meeting minutes - ? Tracking system for actions - ? Specific responsibilities within the project Deleted: /pypy/trunk/doc/funding/B5.6_communication.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.6_communication.txt Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,34 +0,0 @@ -B.5.6 Communication and Reporting. - -The technical development of PyPy is driven by open continous discussion. -Many of the involved decisions are made and verified during one-week -working meetings, so called "sprints". Members from the larger Python -software community are publicly invited and have the chance to interact -and work with the PyPy developers or become one themselves. - -Mailing lists, chat-sessions, Wikis and notification of program changes -provide a constant flow of information between PyPy project members and -the wider community. Additionally, groups of developers can start -interactive "screen" sessions which allows sharing their workspace and -implement and communicate efficiently. Therefore conflicts out of missing -or conflicting information or due to misunderstandings will be minimized. - -Each sprint meeting is planned for by all developers. The sprint goals -are usually agreed upon before the meeting starts. This is also important -to allow new developers or contributors to join specific efforts. -Sprint results are subsequently published to email and web-channels to -gather feedback and educate others about changes. - -We will present multiple reports and scientific papers on major -conferences such as EuroPython (Python's european community conference), -OSCON (Open Source Convention), PyCon (python developer conference) and to -domain specific audiences such as embedded device developers. - -In a later phase of the project the PEP (Python Enhancement Proposals) -procedures may be implemented. This is the standard procedure for -applying changes to the C-implementation of Python as of today. -It forces an author to clearly state the benefits of the proposed Enhancement -and provides an rationale. However, such a formal method will only by -required when the project reaches the point where users begin to rely -on aspects of our implementation. - Deleted: /pypy/trunk/doc/funding/B5.8_ip.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.8_ip.txt Fri Oct 10 18:01:12 2003 +++ (empty file) @@ -1,42 +0,0 @@ -B.5.8 Management of Knowledge and Intellectual Property - -Every contributor is fully responsible for not introducing program code -which might infringe third party copyright or patents for that matter. -Every contributor agrees to license his contributions under a MIT-style -license (approved by the Open Source Initiative):: - - The MIT License - - Copyright (c) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - -The public availability of PyPy's source code at all times on the basis on such -an open and commercially exploitable license stipulates exchange of ideas, -contribution to the project and reusing all parts of PyPy from the start. - -In return, this provides the developers with fast feedback and improvements with -respect to their current developments. At the heart of a free software community -lies open communication, the free flow of information and organizing shared -interests. The PyPy project is already fully involved and based on these principles. -We also believe that for a language runtime system like PyPy a free license -is of vital importance to reach wide deployment and recognition. Such a license -is also a neccessity to allow PyPy to become a reference implementation of the -Python language specification. From arigo at codespeak.net Fri Oct 10 18:12:32 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 18:12:32 +0200 (MEST) Subject: [pypy-svn] rev 1677 - pypy/trunk/doc/funding Message-ID: <20031010161232.673CD5A253@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 18:12:31 2003 New Revision: 1677 Modified: pypy/trunk/doc/funding/B5.2_management_structure.txt Log: added FIXMEs Modified: pypy/trunk/doc/funding/B5.2_management_structure.txt ============================================================================== --- pypy/trunk/doc/funding/B5.2_management_structure.txt (original) +++ pypy/trunk/doc/funding/B5.2_management_structure.txt Fri Oct 10 18:12:31 2003 @@ -1,5 +1,3 @@ -FIXME WRITE ME !! and stick the result into B5.0 - Management Structure ==================== @@ -24,3 +22,9 @@ to combine the Management and Technical Boards although they must continue to deal with both aspects. + +FIXME_LAURA_BEA +XXX the two boards are somewhat already documented in B5.0, but their +structure doesn't seem to match exactly what is described here. +Please delete this file if no longer appropriate, but don't forget +to put something in section 5.2 in file B5.0_manage_bea.txt. From tismer at codespeak.net Fri Oct 10 18:13:22 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 18:13:22 +0200 (MEST) Subject: [pypy-svn] rev 1678 - pypy/trunk/doc/funding/makedoc Message-ID: <20031010161322.2F7635A253@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 18:13:19 2003 New Revision: 1678 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: created PDF from current snapshot. HEY we have *lots* of FIXMEs Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From arigo at codespeak.net Fri Oct 10 18:56:20 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 18:56:20 +0200 (MEST) Subject: [pypy-svn] rev 1679 - pypy/trunk/src/pypy/translator Message-ID: <20031010165620.5BD615A253@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 18:56:19 2003 New Revision: 1679 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: Using psetq instead of setq for parallel variable renaming Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Fri Oct 10 18:56:19 2003 @@ -60,11 +60,14 @@ else: print branch.__class__, "is missing" def emit_branch(self, branch): - source = branch.args - target = branch.target.input_args - for item in zip(source, target): - init, var = map(self.str, item) - print "(setq", var, init, ")" + if branch.target.has_renaming: + source = branch.args + target = branch.target.input_args + print "(psetq", # parallel assignment + for item in zip(source, target): + init, var = map(self.str, item) + print var, init, + print ")" self.emit_block(branch.target) def emit_conditional_branch(self, branch): print "(if" From pedronis at codespeak.net Fri Oct 10 19:25:44 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 10 Oct 2003 19:25:44 +0200 (MEST) Subject: [pypy-svn] rev 1680 - pypy/trunk/doc/funding Message-ID: <20031010172544.2D08D5A253@thoth.codespeak.net> Author: pedronis Date: Fri Oct 10 19:25:37 2003 New Revision: 1680 Removed: pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt Modified: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Log: reworked wp10/wp90 contents into wp09. put some start of wp10 real contetnts into it from wp90. removed wp90. Modified: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt Fri Oct 10 19:25:37 2003 @@ -1,5 +1,13 @@ .. include:: crossreferences.asc +:DELETE:BEGIN + +FIXME +partecipants: Logilab, PBF, (DFKI?) +time estimates: ? + +:DELETE:END + .. |title| replace:: Language Research and Extensions .. |wp| replace:: WP09 .. |start| replace:: 0 @@ -22,21 +30,62 @@ **Objectives** -XXX write me +Leveraging PyPy flexibility implement language-integrated constraint +satisfaction algorithms and inference engine to allow logic +programming for Semantic Web applications. Also implement aspect +oriented programming language features. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -XXX write me +**Task 1** + +Using the flexible architecture provided by the PyPy interpreter, we +will first reimplement the current python-logic libraries available +from Logilab to better integrate with the language and gain important +execution speed-ups. + +:DELETE:BEGIN +FIXME should we mention (where?) that this is going to be used +by WP10_: + +This logic programming enabled python interpreter will then be +used to further develop the projects related to Semantic Web +applications that are on-going at Logilab and DFKI. +:DELETE:END + +**Task 2** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current aspect-oriented libraries +available from Logilab, to better integrate with the language +and greatly simplify the design and enhance the performance. + +:DELETE:BEGIN +FIXME where should this go? +This aspect enabled interpreter will be used to offer +design-by-contract facilities as seen in the Eiffel programming +language and the current aspect-oriented library. It will also +allow us to implement advanced static checking and code +correctness capabilities, thus furthering the work done with +the pychecker and pylint tools. +:DELETE:END .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -XXX write me +- DL??? Implementation of constraint satisfaction engine and + inference engine in PyPy + +- DL??? Implementation of aspect-oriented programming + capabilities in PyPy + +- DL??? Implementation of design-by-contract and advanced + static checking capabilities. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Fri Oct 10 19:25:37 2003 @@ -2,18 +2,12 @@ :DELETE:BEGIN: -participants are Logilab and PBF +FIXME +participants: Logilab and DFKI +time estimates: +roughly 1,5 person each --> 3 person total for 1 year (?) -possible: Alex Martelli with Strakt or PBF ? - -FIXME_NICO: Title was -Aspect Oriented Programming and static checking - -Is this the right place for this? Please change as you see fit. - -Also, part of the work description should be moved into -the introduction, it is a little too verbose here. -(Just leave it in here for now) +FIXME Semantic Web in the title ? :DELETE:END: @@ -39,37 +33,25 @@ **Objectives** -Implement aspect oriented programming features to -allow for more flexible ways to design software -applications by better separating design concerns. +The logic programming enabled Python interpreter produced in WP09_ +will then be used to further develop the projects related to Semantic +Web applications that are on-going at Logilab and DFKI. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. It will also -allow us to implement advanced static checking and code -correctness capabilities, thus furthering the work done with -the pychecker and pylint tools. +FIXME_DFKI should fill this in... .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. +- DL??? Assessment of benefits obtained from using PyPy over + current tools to further develop Semantic Web projects + at Logilab and DFKI. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt Fri Oct 10 19:25:37 2003 +++ (empty file) @@ -1,70 +0,0 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN: - -participants are Logilab and DFKI - -roughly 1,5 person each - ---> 3 person total for 1 year (?) - -:DELETE:END: - -.. |title| replace:: Constraint programming for the Semantic Web -.. |wp| replace:: WP90 -.. |start| replace:: |e| -.. |p1| replace:: X -.. |m1| replace:: 0 -.. |p2| replace:: Y -.. |m2| replace:: 0 -.. |p3| replace:: Z -.. |m3| replace:: 0 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Implement constraint satisfaction algorithms and -inference engine to allow logic programming for -Semantic Web applications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current python-logic libraries -available from Logilab to better integrate with the language -and gain important execution speed-ups. - -This logic programming enabled python interpreter will then be -used to further develop the projects related to Semantic Web -applications that are on-going at Logilab and DFKI. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Implementation of constraint satisfaction engine and - inference engine in PyPy - -- DL??? Assessment of benefits obtained from using PyPy over - current tools to further develop Semantic Web projects - at Logilab and DFKI. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc From tismer at codespeak.net Fri Oct 10 19:39:56 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 19:39:56 +0200 (MEST) Subject: [pypy-svn] rev 1681 - pypy/trunk/doc/funding Message-ID: <20031010173956.29E3A5A253@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 19:39:50 2003 New Revision: 1681 Modified: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Log: works fine, small syntax changes Modified: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt Fri Oct 10 19:39:50 2003 @@ -48,12 +48,14 @@ execution speed-ups. :DELETE:BEGIN + FIXME should we mention (where?) that this is going to be used -by WP10_: +by WP10_? This logic programming enabled python interpreter will then be used to further develop the projects related to Semantic Web applications that are on-going at Logilab and DFKI. + :DELETE:END **Task 2** @@ -64,6 +66,7 @@ and greatly simplify the design and enhance the performance. :DELETE:BEGIN + FIXME where should this go? This aspect enabled interpreter will be used to offer design-by-contract facilities as seen in the Eiffel programming @@ -71,6 +74,7 @@ allow us to implement advanced static checking and code correctness capabilities, thus furthering the work done with the pychecker and pylint tools. + :DELETE:END .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Fri Oct 10 19:39:50 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -:DELETE:BEGIN: +:DELETE:BEGIN FIXME participants: Logilab and DFKI @@ -9,7 +9,7 @@ FIXME Semantic Web in the title ? -:DELETE:END: +:DELETE:END .. |title| replace:: Application of language extensions .. |wp| replace:: WP10 From hpk at codespeak.net Fri Oct 10 19:58:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 10 Oct 2003 19:58:50 +0200 (MEST) Subject: [pypy-svn] rev 1682 - pypy/trunk/doc/funding Message-ID: <20031010175850.E0C965A253@thoth.codespeak.net> Author: hpk Date: Fri Oct 10 19:58:49 2003 New Revision: 1682 Modified: pypy/trunk/doc/funding/B4.0_resources.txt Log: infrae is out (for whatever reasons i don't fully grasp) Modified: pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.txt (original) +++ pypy/trunk/doc/funding/B4.0_resources.txt Fri Oct 10 19:58:49 2003 @@ -68,7 +68,5 @@ applying new techniques to solve industrial clients' problems. XXXFIXME -Infrae(?) Dutch Holger Krekel - interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, anna ravenscroft, gunter janton, samuele pedroni From ale at codespeak.net Fri Oct 10 20:39:52 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Fri, 10 Oct 2003 20:39:52 +0200 (MEST) Subject: [pypy-svn] rev 1683 - pypy/trunk/doc/funding Message-ID: <20031010183952.CC2655A2A6@thoth.codespeak.net> Author: ale Date: Fri Oct 10 20:39:49 2003 New Revision: 1683 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: typos Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 10 20:39:49 2003 @@ -28,23 +28,30 @@ This will impact software development in several important ways. - The cost of software development will deminish. + - The cost of software development will diminish. - The time to market will be reduced. + - The time to market will be reduced. - The cost of software maintenance will be reduced. + - The cost of software maintenance will be reduced. - Reduce barriers to market a product. + - Reduce barriers to market a product. The development methods of the PyPy project will prove that using Sprints, pair programming and test driven development, results in : - Broader understanding of the code base among developers + - Broader understanding of the code base among developers - Rapid developments from ideas to working code + - Rapid developments from ideas to working code + + - Sustainable project progress through unittesting + +The cost of software development is essentially labor costs, time to market +and costs of software tools. Having a (free) flexible VHLL will ease the development +through the fact that problems are solved closer to the abstraction level +they are formulated. This will greatly improve the productivity of the +individual programmer. - Sustainable project progress through unittesting We intend to make a new reference version of the Python Programming From arigo at codespeak.net Fri Oct 10 20:56:01 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 10 Oct 2003 20:56:01 +0200 (MEST) Subject: [pypy-svn] rev 1684 - pypy/trunk/doc/funding Message-ID: <20031010185601.C7C5E5A2EF@thoth.codespeak.net> Author: arigo Date: Fri Oct 10 20:56:00 2003 New Revision: 1684 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Merged content from Bea Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 20:56:00 2003 @@ -76,7 +76,9 @@ projectmethod and share knowledge and experience in that area as well. It is our goal that the overall deliverables from this project will be a functioning PyPy as well as an effective projectmethod for -agile development/Open Source projects. +agile development/Open Source projects. Our goal is also to disseminate +this knowledge to the developer communities inside and outside the Open +Source movement as well as to commercial and academic organisations. On the following pages we will describe in more detail how this choice of method will influence the way this project will be managed. @@ -102,28 +104,29 @@ o report to the project coordinator o support the project coordinator concerning the relations to the EU o manage the sprints -o manage routines for quality assurance of the technical development +o manage tracking of quality assurance of the technical development The role of the assistant project manager is to: -o report to the project manager -o participate in reports to management board and project coordinator -o manage project administration (reports, documentation,etc) -o manage routines for sprints, quality assurance of project process, resourceallocation -o manage contact with external partners -o manage the day-to-day operations of the project (ex. executing decisions made by -o management board) -o manage the knowledge process and actively spread information to the Open Source -o community regarding methods used +o report to the project manager +o participate in reports to management board and project coordinator +o manage project administration (reports, documentation,etc) +o manage routines and tracking of sprints, quality assurance of project +o process, resourceallocation +o manage contact with external partners +o manage the day-to-day operations of the project (ex. executing +o decisions made by management board) +o manage the knowledge process and actively spread information to the +o stakeholders regarding methods used and knowledge aquired The reasons for having a structure based on a project manager and assisting project manager are: both the development and the project process will recieve due attention in that the persons chosen have expert skills in these different areas - - the project will not be exposed to the risk that a single project manager would mean - (hhmm d?ligt ? formulera om) + + the project will not be exposed to the risk that a single project + manager would mean a project of this size with team and stakeholders distributed in several countries needs more project management resources @@ -244,18 +247,106 @@ honesty and trust the achieve goals together with her team. Beatrice have been teaching management oriented courses (leadership, project management, communication, conflictresolving) for Learning Tree -International since 2003 in both Sweden and USA. +International since 2000 in both Sweden and USA. :DELETE:BEGIN B 5.2 Management structure -B 5.3 Coordinator ? dont write +:DELETE:END -B 5.4 Project meetings +Management structure +------------------------- + +The management structure will be as follows: + + Author: tismer Date: Fri Oct 10 21:19:12 2003 New Revision: 1685 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: small corrections, made a enw PDF Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Fri Oct 10 21:19:12 2003 @@ -58,18 +58,18 @@ Our reasons for choosing this development and projectmethod are several: -o This project has a history of 6 months in which the team succesfully +- This project has a history of 6 months in which the team succesfully implemented sprints and agile development methods -o In this project, teammembers from 5 (?) different countries will work +- In this project, teammembers from 5 (?) different countries will work continuously in separate places, sprints will be the main forum in which the teammembers meet up and work together in real life -o The sprints will be open for nonteammembers to participate in the +- The sprints will be open for nonteammembers to participate in the development process, thus allowing for an open and feedbackdriven process -o The sprints will be the forum in which knowledge will be shared and +- The sprints will be the forum in which knowledge will be shared and the transparancy within the project organisation will be measured We will during the project focus on evaluating and documenting our @@ -98,26 +98,26 @@ The role of the project manager is to: -o manage the project and its scope of time, budget and deliverables -o lead the work of the management board and report to the management board -o execute decisions made in the management board -o report to the project coordinator -o support the project coordinator concerning the relations to the EU -o manage the sprints -o manage tracking of quality assurance of the technical development +- manage the project and its scope of time, budget and deliverables +- lead the work of the management board and report to the management board +- execute decisions made in the management board +- report to the project coordinator +- support the project coordinator concerning the relations to the EU +- manage the sprints +- manage tracking of quality assurance of the technical development The role of the assistant project manager is to: -o report to the project manager -o participate in reports to management board and project coordinator -o manage project administration (reports, documentation,etc) -o manage routines and tracking of sprints, quality assurance of project -o process, resourceallocation -o manage contact with external partners -o manage the day-to-day operations of the project (ex. executing -o decisions made by management board) -o manage the knowledge process and actively spread information to the -o stakeholders regarding methods used and knowledge aquired +- report to the project manager +- participate in reports to management board and project coordinator +- manage project administration (reports, documentation,etc) +- manage routines and tracking of sprints, quality assurance of project +- process, resourceallocation +- manage contact with external partners +- manage the day-to-day operations of the project (ex. executing +- decisions made by management board) +- manage the knowledge process and actively spread information to the +- stakeholders regarding methods used and knowledge aquired The reasons for having a structure based on a project manager and assisting project manager are: @@ -236,7 +236,7 @@ recruiting a suitable CEO as replacement. Jacob enjoys managing technical processes more than general corporate management. -**Beatrice D?ring** have experience from leadership situations in projects +**Beatrice D?ring** has experience from leadership situations in projects as well as in lineorganisations since 1998. During four years she was a part of a management team of five people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, motivating @@ -264,17 +264,17 @@ Representatives in the management board: -o name, company -o xxx -o xxx +- name, company +- xxx +- xxx Responsibilities of the management board includes: -o manage resources -o manage quality assurance for the project and the technical process -o track cost, timeline, tasks, budget -o manage technical implementation plan and progress -o manage compliance with legal and ethical obligations +- manage resources +- manage quality assurance for the project and the technical process +- track cost, timeline, tasks, budget +- manage technical implementation plan and progress +- manage compliance with legal and ethical obligations The operative management of these responsibilities will be delegated to the project management team and the technical board. In the management @@ -284,19 +284,19 @@ Representantives in the technical board: -o name, company, workpackage -o name, company, workspackage -o xxx -o xxx -o xxx +- name, company, workpackage +- name, company, workspackage +- xxx +- xxx +- xxx The responsibilities of the technical board are: -o make recommendations on technical strategic issues to be decided in the +- make recommendations on technical strategic issues to be decided in the management board -o manage the quality assurance of the technical development process - +- manage the quality assurance of the technical development process - this task is delegated to the technical board from the management board -o manage technical implementation plan and progress - this task +- manage technical implementation plan and progress - this task is delegated to the technical board from the management board These responsibilities are reported to the management board through the @@ -328,15 +328,16 @@ xxx The responsibilities of the project coordinator will include: -o to manage negotiations regarding proposal -o to manage ongoing dialogue with the EU project office during the project -o to appoint a project manager -o to be a representative on the management board -o to participate in the project review workshops -o to submit reports regarding project review workshops -o to participate in project evaluation and submit report of this to the EU + +- to manage negotiations regarding proposal +- to manage ongoing dialogue with the EU project office during the project +- to appoint a project manager +- to be a representative on the management board +- to participate in the project review workshops +- to submit reports regarding project review workshops +- to participate in project evaluation and submit report of this to the EU project office -o handle financial tasks and payments between the project and the EU +- handle financial tasks and payments between the project and the EU project office The project coordinator will be able to use the project management team @@ -509,19 +510,19 @@ approval at the first Meeting. It should complement the prescribed quality approach with respect to the following aspects: -o Document procedures, standards and control -o Issue control for documents -o Reporting procedures, frequency and format -o Communication procedures -o Corrective actions -o Exception control -o Conflict resolution -o Meeting draft agenda -o Format of meeting minutes -o Tracking system for actions -o Risk assessment -o Evaluation routines -o Specific responsibilities within the project +- Document procedures, standards and control +- Issue control for documents +- Reporting procedures, frequency and format +- Communication procedures +- Corrective actions +- Exception control +- Conflict resolution +- Meeting draft agenda +- Format of meeting minutes +- Tracking system for actions +- Risk assessment +- Evaluation routines +- Specific responsibilities within the project :DELETE:BEGIN @@ -534,17 +535,17 @@ The project process will be reported as follows: -o Monthly written status reports to the Management Board/Technical +- Monthly written status reports to the Management Board/Technical Board by the project management team. These reports will be posted on the internal project web for the entire team to access. -o Project review report to the EU project office. These reports are +- Project review report to the EU project office. These reports are the result of the project review workshops (every 6th month) and are produced by the project management team. These reports will be posted on the internal project web for the entire team to access. -o Project evaluation report. At the end of the project, an +- Project evaluation report. At the end of the project, an evaluation report will be produced in which both product, process and deliverables will be evaluated. This report will be presented to stakeholders (consortium companies and partners) and the EU @@ -553,10 +554,10 @@ Transparancy concerning information and decisionmaking is vital for the PyPy project: -o all discussions, protocolls, reports, reviews and product/project +- all discussions, protocolls, reports, reviews and product/project information will be accessible to all people participating in the project -o information of the kind mentioned above will not be altered to suit +- information of the kind mentioned above will not be altered to suit different target groups in the project - this minimizes the risk for information to be filtered @@ -602,11 +603,11 @@ The consortium consists of the following members: -o xxx -o xxx -o xxx -o xxx -o xxx +- xxx +- xxx +- xxx +- xxx +- xxx (Alastair - something we sould mention here about the agreement?) @@ -661,3 +662,4 @@ importance to reach wide deployment and recognition. Such a license is also a neccessity to allow PyPy to become a reference implementation of the Python language specification. + Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Fri Oct 10 22:00:44 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 22:00:44 +0200 (MEST) Subject: [pypy-svn] rev 1686 - pypy/trunk/doc/funding Message-ID: <20031010200044.605D95A2A6@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 22:00:43 2003 New Revision: 1686 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: added my CV (please look if that isn't too bad) Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 22:00:43 2003 @@ -87,7 +87,7 @@ recognition, image processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 magna cum laude. -Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich +Samuele Pedronis: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as teaching/published research assistant at the Institute of Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic @@ -135,3 +135,19 @@ sales force of 7500. In the 1980's, served as Psychological Operations Specialist in the US Army, receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. + +Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics +and Informatics at the Free University of Berlin, diploma on Adaptive +Huffman Coding. He has been working for Pharmaceutic Research +companies for more than 10 years, doing statistical evaluations, +EEG and EMG recording, signal analysis, networking, report generation +and automation. In 1985, he wrote his first multitasking system +for DOS, implementing continuous 32 channel EEG recording and visualisation +on a 286 machine. As a free software consultant, Christian developed +Netscape plugins, automated generation of documents from databases, +Web applications with Medusa and later Zope. In 1997, he learned +about Python, founded the Python Starship, and started working on +the Python kernel. He translated various Python books into German, +is the author of the Stackless Python extension, which will now be +merged into the PyPy project, and belongs to the founders of the PyPy project. + From tismer at codespeak.net Fri Oct 10 22:10:50 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 10 Oct 2003 22:10:50 +0200 (MEST) Subject: [pypy-svn] rev 1687 - pypy/trunk/doc/funding Message-ID: <20031010201050.4F4905A2A6@thoth.codespeak.net> Author: tismer Date: Fri Oct 10 22:10:49 2003 New Revision: 1687 Modified: pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B4.3_participants.txt Log: CHecked Tomek#s CV in. Not complete, he needs to write something about what he created so far. Made pedronis into pedroni, again :-) Modified: pypy/trunk/doc/funding/B4.1_subcontracting.txt ============================================================================== --- pypy/trunk/doc/funding/B4.1_subcontracting.txt (original) +++ pypy/trunk/doc/funding/B4.1_subcontracting.txt Fri Oct 10 22:10:49 2003 @@ -13,6 +13,7 @@ :DELETE:END FIXME_LAURA yes, I have to write this. Get figures from KPMG + Sub-contracting ================= Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 22:10:49 2003 @@ -87,7 +87,7 @@ recognition, image processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 magna cum laude. -Samuele Pedronis: Born 1974 in Switzerland. Dipl. Math. ETH Zurich +Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as teaching/published research assistant at the Institute of Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic @@ -151,3 +151,10 @@ is the author of the Stackless Python extension, which will now be merged into the PyPy project, and belongs to the founders of the PyPy project. +Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the +Technical University in Berlin. He is going to write his diploma thesis on Pypy +- about implementing Scheme on top of Pypy. He has a strong background about web +programming (python, zope, perl), now is working in dai-lab on the Technical +University and is reimplementing the parser and compiler for the agent- +controling language JADL. His passions: programming, traveling, philosophy. +XXX will be augmented a little XXX From lac at codespeak.net Fri Oct 10 22:34:06 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 10 Oct 2003 22:34:06 +0200 (MEST) Subject: [pypy-svn] rev 1688 - pypy/trunk/doc/funding Message-ID: <20031010203406.AFDD45A2A6@thoth.codespeak.net> Author: lac Date: Fri Oct 10 22:34:05 2003 New Revision: 1688 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: I know it feels like Pypy owns us sometimes, but this is not so. Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Fri Oct 10 22:34:05 2003 @@ -149,7 +149,7 @@ about Python, founded the Python Starship, and started working on the Python kernel. He translated various Python books into German, is the author of the Stackless Python extension, which will now be -merged into the PyPy project, and belongs to the founders of the PyPy project. +merged into the PyPy project, and is one of the founders of the PyPy project. Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the Technical University in Berlin. He is going to write his diploma thesis on Pypy From pedronis at codespeak.net Fri Oct 10 23:37:08 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 10 Oct 2003 23:37:08 +0200 (MEST) Subject: [pypy-svn] rev 1689 - pypy/trunk/doc/funding Message-ID: <20031010213708.B6A0B5A2A6@thoth.codespeak.net> Author: pedronis Date: Fri Oct 10 23:37:07 2003 New Revision: 1689 Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt pypy/trunk/doc/funding/crossreferences.asc Log: changed wp01 to refer to a project website contents and structure changed wp02 to refer to website infrastructure Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp01_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp01_management.txt Fri Oct 10 23:37:07 2003 @@ -32,7 +32,8 @@ - collection and monitoring of monthly status reports, - reporting to the EU project office - organising meetings and sprints -- maintaining an internal web site. The website will make heavy +- maintaining contents and structure of the project web site. + The website will make heavy use of collaborative tools like Wiki pages, a content management system, and issue trackers. Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Fri Oct 10 23:37:07 2003 @@ -45,7 +45,7 @@ - maintain/extend issuetracker -- maintain and enhance website +- maintain and enhance website infrastructure - perform backups for all relevant information/code Modified: pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Fri Oct 10 23:37:07 2003 @@ -4,7 +4,7 @@ FIXME participants: Logilab and DFKI -time estimates: +time estimates: ? roughly 1,5 person each --> 3 person total for 1 year (?) FIXME Semantic Web in the title ? Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 10 23:37:07 2003 @@ -12,6 +12,5 @@ .. _WP12: B6.7.wp12_integration_config.html .. _WP13: B6.7.wp13_existing_apps.html .. _WP14: B6.7.wp14_documentation.html -.. _WP90: B6.7.wp90_constraint_prog.html .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file From jacob at codespeak.net Fri Oct 10 23:45:47 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Fri, 10 Oct 2003 23:45:47 +0200 (MEST) Subject: [pypy-svn] rev 1690 - pypy/trunk/doc/funding Message-ID: <20031010214547.8DBBD5A2A6@thoth.codespeak.net> Author: jacob Date: Fri Oct 10 23:45:46 2003 New Revision: 1690 Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Log: Initial draft. Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- pypy/trunk/doc/funding/B4.4_quality_SMEs.txt (original) +++ pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Fri Oct 10 23:45:46 2003 @@ -1,13 +1,131 @@ -B.4.4 Quality of partnership, involvement of users and SMEs +Quality of partnership, involvement of users and SMEs +===================================================== -Show that the organisations involved in the consortium are capable of -doing the tasks allotted to them. Ensure there is no unnecessary -redundancy and duplication in the make-up of the consortium. Ensure -the consortium does not lack an obvious participant with some -essential skill or resource. - -Describe how involvement of SMEs has been addressed. - -FIXME HOLGER FIXME LAURA FIXME JACOB FIXME NICO -Here we discuss the PBF in gory detail, how you make a Sig, and -how this is an SME-driven project. Strakt and Logilab are SMEs too. \ No newline at end of file +Roles +----- +While all the partners except Changemaker have staff with Python +programming skills that will enable them to fulfill computer program +development in the various tasks of the project, each partner brings +unique skills or functions, without which the project is not complete. + +DFKI +++++ +has pervious experience of being a project coordinator in EU projects, +ensuring smooth communication between the project and the FP6 project +officer. + +Max Planck Institut ++++++++++++++++++++ +will showcase how to apply the results of the project in the research +environment. The insitute currently leverages the speed of development +with Python but would be able to solve a wider range of problems with +a faster version of the language. + +FIXME: Where does Christian go? Under MPI? +++++++++++++++++++++++++++++++++++++++++++ +Christian Tismer is the developer of Stackless Python, which is the +blueprint for how we intend to implement persistant threads. + +University of Southampton ++++++++++++++++++++++++++ +is the employer of Armin Rigo, who is the lead architect of the whole +project as well as the author of Psyco, the blueprint for how to do +optimisation in Pypy. + +FIXME: Where does Samuele go? ++++++++++++++++++++++++++++++ +Samuele Pedroni is the main developer of Jython, an implementation of +Python that uses the Java Virtual Machine. He is an expert on how to +generate code for different virtual machines. He brings experience in +this field and a creative mind to the project. + +Strakt +++++++ +brings mamangement knowhow and entrepreneurial skills to the project +as well as showcasing how to apply the results of the project in a +major business application. + +Strakt will also bring Tim Peters to the project. Tim has for several +years been a core developer of the present major implementation of +Python, what we call CPython. Apart from being an outstanding +programmer, Tim has intimate knowledge about all the details of the +Python language definition. + +With 12 full time and 6 part time employees, Strakt is an SME +representative. + +FIXME: Where does Alex go? PBF? ++++++++++++++++++++++++++++++++ +Alex Martelli ++++++++++++++ +Being a prolific writer and popular speaker as well as a Python +programmer, Alex is uniquely suited for widely diseminating the +progress and the results of the project. + +Berlin FIXME Univesit?t ++++++++++++++++++++++++ +will have Tomek Meka doing his diploma work for a Computer Science +degree. We believe that the Pypy project opens up new avenues for +studies and research from undergraduate level to advanced researchers. +We hope to verify this through Tomeks work in the project. + +Changemaker ++++++++++++ +adds rare project management skills by managing not only the project, +but the learning processes of the project participants as well as the +group dynamics between the different members. We intend to document +and diseminate the management of change throughout the project. +Changemaker is also the contact point for Axis Communications, who +will showcase how to integrate Pypy in an embedded device. + +Logilab ++++++++ +focuses on constraints and aspect oriented programming and will verify +that Pypy is extensible with specialised language features. + +With 6 full time employees, Logilab is an SME representative. + +Python Business Forum ++++++++++++++++++++++ +is an industry organisation for companies where Python is a central +part of the business model. The PBF is registered as a non-profit +organisation under Swedish law. It has approximately 50 SME +members. The Forum has a board, which focuses on administration and +strategic issues, while the main activities occur in Special Interest +Groups (SIGs). Each SIG controls its own activities but reports to the +board in financial matters. + +The PBF will form a Pypy SIG with Holger Krekel as chairman to handle +its involvement in the project. + +The PBF brings a number of SME parties to the project who will be +eager to apply Pypy to their various products. The selection of which +products and companies that should do validations will be made later +in the project, since it is impossible to tell which ones will produce +the most useful results when validations starts some 24 months from +now. + +Holger Krekel will also be the active PBF representative in the +project, with a focus on devlopment, packaging and disemination +tools. He will also be a main contributor in matters of systems +architecture. + +Ability to deliver +------------------ +DFKI, Logilab, Max Planck Intitut and University of Southampton have +already successfully participated in EU projects, so their ability to +deliver on another project should not be in doubt. + +Strakt, Tismer and Martelli have all recently produced substantial +products, which show their capability to handle large undertakings. + +Krekel has demonstrated his ability to deliver results during the +prototype phase that has preceeded this application. For the rest of +the PBF, it should be noted that the chairman of the SIG is a member +of the project, as well as 3 of the members of the PBF board; +Creighton, Hall?n and Martelli. The stated merits of these people and +their respective organisations should vouch for the PBF fulfilling its +undertakings. + +Changemaker has a number of documented successful projects. Further +details can be found under B 5.1. From jacob at codespeak.net Sat Oct 11 00:25:13 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sat, 11 Oct 2003 00:25:13 +0200 (MEST) Subject: [pypy-svn] rev 1691 - pypy/trunk/doc/funding Message-ID: <20031010222513.06EB15A2A6@thoth.codespeak.net> Author: jacob Date: Sat Oct 11 00:25:08 2003 New Revision: 1691 Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Fixed typos. Added more information. Changed status of Christian. Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- pypy/trunk/doc/funding/B4.4_quality_SMEs.txt (original) +++ pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Sat Oct 11 00:25:08 2003 @@ -21,11 +21,6 @@ with Python but would be able to solve a wider range of problems with a faster version of the language. -FIXME: Where does Christian go? Under MPI? -++++++++++++++++++++++++++++++++++++++++++ -Christian Tismer is the developer of Stackless Python, which is the -blueprint for how we intend to implement persistant threads. - University of Southampton +++++++++++++++++++++++++ is the employer of Armin Rigo, who is the lead architect of the whole @@ -41,7 +36,7 @@ Strakt ++++++ -brings mamangement knowhow and entrepreneurial skills to the project +brings manangement knowhow and entrepreneurial skills to the project as well as showcasing how to apply the results of the project in a major business application. @@ -59,7 +54,7 @@ Alex Martelli +++++++++++++ Being a prolific writer and popular speaker as well as a Python -programmer, Alex is uniquely suited for widely diseminating the +programmer, Alex is uniquely suited for widely disseminating the progress and the results of the project. Berlin FIXME Univesit?t @@ -74,7 +69,7 @@ adds rare project management skills by managing not only the project, but the learning processes of the project participants as well as the group dynamics between the different members. We intend to document -and diseminate the management of change throughout the project. +and disseminate the management of change throughout the project. Changemaker is also the contact point for Axis Communications, who will showcase how to integrate Pypy in an embedded device. @@ -95,8 +90,8 @@ Groups (SIGs). Each SIG controls its own activities but reports to the board in financial matters. -The PBF will form a Pypy SIG with Holger Krekel as chairman to handle -its involvement in the project. +The PBF will form a Pypy SIG with **Holger Krekel** as chairman to +handle its involvement in the project. The PBF brings a number of SME parties to the project who will be eager to apply Pypy to their various products. The selection of which @@ -105,11 +100,15 @@ the most useful results when validations starts some 24 months from now. -Holger Krekel will also be the active PBF representative in the -project, with a focus on devlopment, packaging and disemination +**Holger Krekel** will also be an active PBF representative in the +project, with a focus on devlopment, packaging and dissemination tools. He will also be a main contributor in matters of systems architecture. +**Christian Tismer** will join the project under the auspices of the +PBF. Chritian is the developer of Stackless Python, which is the +blueprint for how we intend to implement persistant threads. + Ability to deliver ------------------ DFKI, Logilab, Max Planck Intitut and University of Southampton have Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Sat Oct 11 00:25:08 2003 @@ -21,7 +21,7 @@ change, when necessary, will be applied throughout the process. To illustrate the focus on development process as well as project focus: - +FIXME: This should be a diagram. Stakeholders; - EU - partners @@ -61,21 +61,21 @@ - This project has a history of 6 months in which the team succesfully implemented sprints and agile development methods -- In this project, teammembers from 5 (?) different countries will work +- In this project, team members from 5 (?) different countries will work continuously in separate places, sprints will be the main forum in - which the teammembers meet up and work together in real life + which the team members meet up and work together in real life -- The sprints will be open for nonteammembers to participate in the - development process, thus allowing for an open and feedbackdriven +- The sprints will be open for non teamm embers to participate in the + development process, thus allowing for an open and feedback driven process - The sprints will be the forum in which knowledge will be shared and the transparancy within the project organisation will be measured We will during the project focus on evaluating and documenting our -projectmethod and share knowledge and experience in that area as +project method and share knowledge and experience in that area as well. It is our goal that the overall deliverables from this project -will be a functioning PyPy as well as an effective projectmethod for +will be a functioning PyPy as well as an effective project method for agile development/Open Source projects. Our goal is also to disseminate this knowledge to the developer communities inside and outside the Open Source movement as well as to commercial and academic organisations. @@ -119,8 +119,8 @@ - manage the knowledge process and actively spread information to the - stakeholders regarding methods used and knowledge aquired -The reasons for having a structure based on a project manager and assisting project manager -are: +The reasons for having a structure based on a project manager and +assisting project manager are: both the development and the project process will recieve due attention in that the persons chosen have expert skills in these different areas @@ -260,13 +260,14 @@ The management structure will be as follows: - Author: jacob Date: Sat Oct 11 00:29:24 2003 New Revision: 1692 Removed: pypy/trunk/doc/funding/B5.2_management_structure.txt Log: Removed redundant file. Deleted: /pypy/trunk/doc/funding/B5.2_management_structure.txt ============================================================================== --- /pypy/trunk/doc/funding/B5.2_management_structure.txt Sat Oct 11 00:29:24 2003 +++ (empty file) @@ -1,30 +0,0 @@ -Management Structure -==================== - -We want the 2 boards. Stick youself for PBF, Nicolas for -Logilab, Jacob for Strakt Alastair for DKFI into the Management box. - -Then make a technical board. Every package responsible person must -be in here. Tim Peters needs to be given responsibility for one thing, -also the coordinate with Cpython Workpackage. - -FIXME_NICO you do the WP changing. - - B.5.2 Management Structure - -As this type of project is essentially the same as the previous RTD -project, I would maintain the traditional structure as follows - - -(see the PDF STREP-template.pdf) - -For smaller projects and depending on the technical abilities of the -company representatives, it is sometimes possible and more effective -to combine the Management and Technical Boards although they must -continue to deal with both aspects. - - -FIXME_LAURA_BEA -XXX the two boards are somewhat already documented in B5.0, but their -structure doesn't seem to match exactly what is described here. -Please delete this file if no longer appropriate, but don't forget -to put something in section 5.2 in file B5.0_manage_bea.txt. From jacob at codespeak.net Sat Oct 11 00:49:45 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sat, 11 Oct 2003 00:49:45 +0200 (MEST) Subject: [pypy-svn] rev 1693 - pypy/trunk/doc/funding Message-ID: <20031010224945.E618D5A2A6@thoth.codespeak.net> Author: jacob Date: Sat Oct 11 00:49:44 2003 New Revision: 1693 Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Further fine tuning. Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- pypy/trunk/doc/funding/B4.4_quality_SMEs.txt (original) +++ pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Sat Oct 11 00:49:44 2003 @@ -57,9 +57,9 @@ programmer, Alex is uniquely suited for widely disseminating the progress and the results of the project. -Berlin FIXME Univesit?t -+++++++++++++++++++++++ -will have Tomek Meka doing his diploma work for a Computer Science +Technischen Universit?t Berlin +++++++++++++++++++++++++++++++ +will have Tomasz Meka doing his diploma work for a Computer Science degree. We believe that the Pypy project opens up new avenues for studies and research from undergraduate level to advanced researchers. We hope to verify this through Tomeks work in the project. @@ -128,3 +128,9 @@ Changemaker has a number of documented successful projects. Further details can be found under B 5.1. + +A special circumstance is that several of the project participants +have already collaborated in developing a proof of concept for +Pypy. This means that the ability to collaborate and to deliver +results has already been tested under circumstances that are very +similar to what they will be during the project. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Sat Oct 11 00:49:44 2003 @@ -61,9 +61,10 @@ - This project has a history of 6 months in which the team succesfully implemented sprints and agile development methods -- In this project, team members from 5 (?) different countries will work - continuously in separate places, sprints will be the main forum in - which the team members meet up and work together in real life +- In this project, team members from at least 5 different countries + will work continuously in separate places. Sprints will be the main + forum in which the team members meet up and work together in real + life - The sprints will be open for non teamm embers to participate in the development process, thus allowing for an open and feedback driven @@ -617,7 +618,7 @@ - Logilab, France - Changemaker, Sweden -(Alastair - something we sould mention here about the agreement?) +(FIXME: Alastair - something we should mention here about the agreement?) :DELETE:BEGIN From lac at codespeak.net Sat Oct 11 01:31:43 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 01:31:43 +0200 (MEST) Subject: [pypy-svn] rev 1694 - pypy/trunk/doc/funding Message-ID: <20031010233143.BD2DC5A2A6@thoth.codespeak.net> Author: lac Date: Sat Oct 11 01:31:42 2003 New Revision: 1694 Added: pypy/trunk/doc/funding/b2.txt Log: bed for me. Added: pypy/trunk/doc/funding/b2.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/b2.txt Sat Oct 11 01:31:42 2003 @@ -0,0 +1,192 @@ +First look at the SWOT table from 'IST Advisory Group: Software technologies, +embedded systems and distributed systems: A European strategy towards an +Ambient Intelligent environment' + + +This table describes the situation nicely. However, it falls short of +having a strategy for addressing the problem presented. We have one. + +Our intent is to use the strength in the Open Source Software development +community (7) and some strong SMEs (8) to combat the Threat of US players +dominating in development platforms(1). In doing so our principal goal +will be to overcome Weakness (1) -- Inadequate Structure and Weak Culture +for transferring and exploiting university research results, fragmentation +of academic efforts. That's the weakness we are most familiar with, and +the one we believe we know how to fix. + +To put it another way, 'Why is that so much of our research effort +comes to nothing? Why do the Americans, and not us, take our research +to market? What exactly is it that goes wrong somewhere between making the +prototype and making the successful company?' + +The answer, we believe, is an inadequate understanding of what it takes +to become successful. In Europe there is a crucial blindness as to +what it takes to be successful in the marketplace. Technological +superiority we have oodles of. It's in the marketplace where we fail. +And this is in large part because people in Europe still believe that +good technology sells itself. This is almost never the case. + +The Americans know that. This is their big secret. And nobody knows this +better than the Open Source movement. We routinely create programs that +are much better than those that are commercially available. And then +what? Nothing, mostly. This problem in European competitiveness is +our problem as well. + +Over time we have learned, the hard way, that being technologically +excellent is the easy part of the job. Getting to market is the hard +part of the job. We believe tthat the European Commission understands +this problem very well. We do not, however, believe that the EC knows +how to solve it. Searching over proposals, we found very few Open +Source ones. This is unsurprising. Perhaps without intending it, +the EC has made participation by Open Source companies more difficult +that it needs to. + +From our outsider's perspective, we see that the EC thinks that it should +plough money into some hopeful line of research, and group some large +industries with some academics, in the hope that the large industries +will use the research in some of their current projects. There is +some sincere effort to get SMEs involved, but almost exclusively as +consumers of research. Small manufacturers, in particular, seem to +be the 'ideal SME' that the EC envisioned when crafting its plan. + +We would like the opportunity to show you an alternative way to attack +the problem, one that comes from the Open Source and Agile Programming +world. + +First of all, you must start with some SME entrepreneurs and some +professional educators or communicators. They are essential to your +eventual success, and they need to be on board even before you begin +your first technical expedition. This is because the first thing to +do is to start with a marketing/educating effort. You need to do this +in order to attract the best people to your project. This is a common +problem in the Open Source world. Some businesses have embraced +Open Source, primarily out of greed. They hope to have other people +develop their software, for free, thus saving them the cost of hiring +developers. They 'hang up a shingle' -- in other words make a +web page, and make a few announcements, and then sit back astonished +when nobody comes. In the Open Source world, it is not the case that +'if you build it, they will come'. There are companies who do +succeed at this. + +The PyPy development team did things differently. We first decided to +make a prototype. This has taken us most of the year 2003, because we +have only been able to do this on our vacations -- about 5 weeks +total. We did this for 2 reasons. The first is that we were quite +aware that we were going to ask you for money to enable us to work +full time creating something useful that had never been done before. +It would be embarassing and shameful to then fail, because we asked to +do something that could not be done. A prototype would allow us to +test our novel concept of Object Spaces. If they did not work, then +our whole idea was unsound. + +Moreover, this would give us the time to greatly publicise our project, +and attract the best people to it. We happen to be some of the biggest +fish in the Python-World Pond, but we made sure that we invited others, +including Guido van Rossum, the biggest fish of all to our development +Sprints. We worked on our process ensuring that we could work together, +and that no unexpected personality clashes or conflicts would derail +the project. We went to conference, after conference, after conference +and gave papers and informal talks about what we intended to do. We +made our own website, set up some mailing lists, and discussed things +not only there, but in the 'python in education' mailing list, the +'marketing python' (this one is about increasing the market share of +Python) mailing list, in the Python developer's list, and in the +newsgroup comp.lang.python. We hung out on our own internet relay +chat line on irc.freenode.net and answered questions of whoever +dropped by. We held open Sprints, and let anybody who was interested +participate. + +We made an enormous splash. We are now an extremely high profile +open source project. We are being watched. If we fail, we will do +it quite publically. + +Why, you might ask, would we go to all that trouble? Because, unlike +some projects you know, where 'getting the EU funding' is all that +really matters, and what you do to get it, is secondary -- we find the +EU funding only a means to our goal. This is because our goal is +multi-facetted. + +First of all there is the straight-forward technical goal. We want to +make an extremely novel specialising compiler for the Python programming +language. This goal is technically quite formidable, and requires +sophisticated expertise. + +Second of all, those of us who write software using Python hope that +our software will itself be improved. This is a commercial interest +for the PBF, a large stakeholder. + +Third of all, there is the marketing goal. We want to make Python +the most used language on the planet. And that is a much harder goal. +We had to successfully attract the best people to the project, without +causing a crisis that would 'fork the project' -- producing 2 hostile +camps who each point at each other saying 'Mine's the real Python'. +When we are done making PyPy we want to immediately capture the +existing user baser of 175,000. <-- should we make an appendix of how +we calculate that? And then we want to go after those Visual Basic, +Java, and C++ programmers out there. Python is currently ranked only +the sixth most popular language on the planet. We would like to become +number one. + +And fourth of all, we want to be the reference project for future +collaboration between the Open Source and the Agile programming +communities, and the EU. We think that both groups need each other. +The EU, in its statement clearly recognises the fact. But it seems, +to us, unsure how to do this. And there are significant risks which +the EU seems to want to take with one hand, while want to prevent +with its other. + +For instance, it is not enough to merely have some SMEs involved, in +some small token way. That will only marginalise them. You will lose +the very ones you want to attract, those with true entrepreeurial +spirit, and keep those who are only after a safe and satisfactory life +at the government trough. If you would like your project adequately +disseminated, you must involve the SMEs all through the project. + +But this is hard to achieve. The smallest SMEs cannot afford to +dedicate a full person to the project, and will find the paperwork +crushing. The project cannot afford to rely on a key player who could +be bought or go bankrupt or become too overworked to contribute at any +moment of time. What then? There is, of course, a solution. If SMEs +banded together, and shared resources, they could function like a +large company. This has worked successfully for Swedish farmers, and +we believed it could work well for software companies as well. With +large enough numbers, you can spread the risk around. While at any +time any PBF member could be in a state of transition, they won't all +be, and somebody equivalent could be found to take the place of +somebody who was temporarily unavailable. + +This, however, is only possible if great effort is taken at all times to +keep the process open and transparent. There must be no secrets. You +cannot get a replacement on a dime unless you are constantly educating +your larger community. Otherwise, getting up to speed would take too +long and the project would fail. Aside from the usual web pages, +conferences, irc channels, and mailing lists, you must make targetted +FIXME BEA what do you call them? And host open Sprints, keep your +source open and availabel for download at all times, and use a +process based FIXME BEA is this correct? Agile development model that +is robust in the possibility of change. + +This is hard. This is very hard. It requires trust, and courage, and +the sort of Egoless programming which is trained, not read about. It is +what the EC has claimed it wants, but which it has not fostered. + +Thus, from our point of view, we see our relevance to the IST program +as 2-fold. First of all we are going to give you the AmbiIntelligent +FIXME_LAURA correct jargon?development platform for networked and +mobile devices that you believe is essential to European competitivness. + +But what we also intend to do is to deliver a model of how you can +actually get the Open Source community to work with you -- and, of +course while we deliver the OS community to you, we are also going to +deliver you to them -- we are going to take special effort to document +and publicise _you_ to _them_. We are going to teach 'how to crack +the system and get the EU to pay for you to develop marvels without +demanding that you lose your soul'. Because, when it comes down to it, +that is what the OS community wants most. A chance to make a difference, +change the world, and make it a better place. + +If you accept this proposal, and our way of software development, we +will only be the first in a long line of successful Open Source projects +that produce the marvels you ask for. And we will stick around and +teach anybody who comes by exactly how we did it. + From lac at codespeak.net Sat Oct 11 09:32:07 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 09:32:07 +0200 (MEST) Subject: [pypy-svn] rev 1695 - pypy/trunk/doc/funding/nico Message-ID: <20031011073207.3F9C85A2EF@thoth.codespeak.net> Author: lac Date: Sat Oct 11 09:32:06 2003 New Revision: 1695 Added: pypy/trunk/doc/funding/nico/ pypy/trunk/doc/funding/nico/B0.0_preamble.txt pypy/trunk/doc/funding/nico/B6.5_workpackage_list.txt pypy/trunk/doc/funding/nico/budget_summary.html pypy/trunk/doc/funding/nico/project_gantt.png (contents, props changed) pypy/trunk/doc/funding/nico/project_planning.xml pypy/trunk/doc/funding/nico/project_resources.xml Log: Added nicolas's stuff to the repository, in its own directory, since he cannot check in. Needs mainline merge. I love svn but we have too many files now to keep track of 'which are Nicolas' and which we need to check and edit' in the top level funding dir. I'd like to atticify a lot of stuff, but I don't know which should be. If I don't know, God help the rest of you ... Apologies for the mess, Laura Added: pypy/trunk/doc/funding/nico/B0.0_preamble.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/B0.0_preamble.txt Sat Oct 11 09:32:06 2003 @@ -0,0 +1,90 @@ +:DELETE:BEGIN + +Annex 2 - Proposal Part B +IST Priority - ? 2nd call - Guide for Proposers ? Specific Targeted Research +Projects ? June 2003 + +Instructions for preparing proposal Part B for +Specific targeted research projects in the IST Priority + +In addition to the detailed technical information provided in Part B, +a proposal must also contain a Part A, containing basic information on +the proposal and the consortium making the proposal1. The forms for +Part A are provided elsewhere in this Guide. Incomplete proposals are +not eligible and will not be evaluated + + +Specific targeted research projects will aim at improving European +competitiveness. They will be sharply focused and will take either of +the following two forms, or a combination of the two: + +(a) a research and technological development project designed to gain + new knowledge either to improve considerably or to develop new products, + processes or services or to meet other needs of society and community + policies; + +(b) a demonstration project designed to prove the viability of new + technologies offering potential economic advantage but which cannot + be commercialised directly. + +Proposers should particularly note that only research, demonstration and +project management activities are funded in STREPs. Training activities +cannot be included among the eligible costs of projects. + +Information which fully details what a STREP comprises and how such a +project should be implemented can be found at +http://www.cordis.lu/fp6/instrument-strp/. Proposers should study this +information thoroughly before commencing the preparation of their proposal + +Part B. + +*** Front page -- PAGE 1 *** + + PYPY + + A flexible, modular, self-hosting, next-generation + specialising compiler for the Open Source Programming + Language Python + + +Proposal Part B + +Date of preparation: October 2004 + + A Specific Targeted Research Project for: IST-2002-2.3.2.3 - Open + development platforms for software and services + +:DELETE:END + +List of participants + +================ ============================================= ======================= +Participant no. Participant name Participant short name +================ ============================================= ======================= +1 (coordinator) DFKI DFKI +---------------- --------------------------------------------- ----------------------- +2 Python Business Forum PBF +---------------- --------------------------------------------- ----------------------- +3 AB Strakt Strakt +---------------- --------------------------------------------- ----------------------- +4 Logilab Logilab +---------------- --------------------------------------------- ----------------------- +5 University of Southampton USH +---------------- --------------------------------------------- ----------------------- +6 ChangeMaker ChangeMaker +---------------- --------------------------------------------- ----------------------- +7 Max-Planck Biology Institute MPI +================ ============================================= ======================= + +Coordinator name Alastair BURT (FIXME) + +Coordinator organisation name DFKI + +Coordinator email burt at dfki.de + +Coordinator fax FIXME + +FIXME_NICO + +.. put this before the TOC + Added: pypy/trunk/doc/funding/nico/B6.5_workpackage_list.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/B6.5_workpackage_list.txt Sat Oct 11 09:32:06 2003 @@ -0,0 +1,52 @@ +.. include:: crossreferences.asc + +Workpackage List +==================== + +:DELETE:BEGIN + +FIXME_LAURA FIXME_NICO: finish this + +:DELETE:END + +.. |wpn| replace:: Work-package No +.. |lcn| replace:: Lead contractor No +.. |pm| replace:: Person-months +.. |sm| replace:: Start month +.. |em| replace:: End month +.. |dn| replace:: Deliverable No + + +===== ==================================================== ===== ==== ==== ==== ==== ======== +|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp +===== ==================================================== ===== ==== ==== ==== ==== ======== +WP01_ Coordination and Management ?? 0 24 DFKI +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP02_ Infrastructure and Tools ?? 0 24 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP03_ Synchronisation with Standard Python ?? 0 24 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP04_ The PyPy Core ?? 0 9 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP05_ The PyPy Translation ?? 0 9 USH +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP06_ Core Optimisations ?? 9 24 USH +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP07_ Translator Optimisations ?? 9 18 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP08_ Dynamic Optimisations ?? 9 18 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP09_ Extend Language with Search and Logic ?? 9 24 DFKI +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP10_ Extend Language with Aspects and Contracts ?? 9 24 Logilab +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP11_ Embed in Specialized Hardware ?? 9 24 ChangeMaker +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP12_ Implement Security, Distribution and Persistence ?? 18 24 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP13_ Integration and Configuration ?? 18 24 PBF +----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP14_ Project Documentation and Dissemination ?? 0 24 Strakt +===== ==================================================== ===== ==== ==== ==== ==== ======== + +note: WP11 is the stuff concerning Axis and ChangeMaker. needs to be written \ No newline at end of file Added: pypy/trunk/doc/funding/nico/budget_summary.html ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/budget_summary.html Sat Oct 11 09:32:06 2003 @@ -0,0 +1,33 @@ +

Pypy budget

+ Modified: pypy/trunk/doc/funding/wp-toptable.asc ============================================================================== --- pypy/trunk/doc/funding/wp-toptable.asc (original) +++ pypy/trunk/doc/funding/wp-toptable.asc Fri Oct 3 10:06:41 2003 @@ -14,7 +14,7 @@ .. raw:: html - +
From tismer at codespeak.net Fri Oct 3 10:45:25 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 10:45:25 +0200 (MEST) Subject: [pypy-svn] rev 1532 - pypy/trunk/doc/funding Message-ID: <20031003084525.AD09B5A143@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 10:45:24 2003 New Revision: 1532 Modified: pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Log: merged and rewrote WP4X Modified: pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt Fri Oct 3 10:45:24 2003 @@ -22,33 +22,12 @@ **Objectives** -- Integration of Stackless's Technology into PyPy. - -- Enable Massive Parallelism in a Single Thread - -- Allow Pickling of a Running Program .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -- Determine which parts of Stackless need to be written in RPython. - -- Design Stackless as a meta-component - that hooks into the translator (WP31_) - -- Implement Stackless partially in RPython, partially in Python, - favoring the latter. - -- Implement a dedicated run-time component (WP33_) for Stackless. - -- Implement a single-threaded, pre-emptive scheduler with - priorities. This is necessary to support small OSes, like WP53_. - -- Further develop these technologies based on the results gathered in WP43_, - e.g. identify when these technologies would guide specific choices among the - solutions developed in WP33_ and studying several solutions in WP42_. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt Fri Oct 3 10:45:24 2003 @@ -22,58 +22,50 @@ **Objectives** -- Identification and Implementation of Optimisations - through modifications of the Translator. +Identification and Implementation of Optimisations +through modifications of the Translator. +Enable Massive Parallelism in a Single Thread. +Provide support for real-time parallelism. +Allow Pickling of a Running Program. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -The following alternatives are mostly specific to a particular low-level run-time. +**Task 1** -* Implement and compare different object layout and memory management strategy - or strategies, e.g. reference counting vs. Boehm garbage collection vs. our own. - Includes speed vs. data size trade-offs. - -* Study approaches concerning code size vs. speed trade-offs (e.g. whether the - final interpreter should still include compact precompiled bytecode or be - completely translated into C). - -* Solve the complex issue of threading (global interpreter lock vs. - alternatives). - -* Enhance multimethod dispatching. - -* Implement schemes of pointer tagging, e.g. encoding an integer object as a pointer with a - special value instead of a real pointer to a data structure representing - the integer. - -* Run various performance tests on the above, check for an - overall improvement or application dependency. - -* For each issue, work on **several solutions** when no one is obviously - better than the other ones. - -* Create reports and merge the results back into the optimization effort. - As of general interest, submit the reports as publication. - -Note that compatibility with legacy C extensions can be achieved by choosing, -for each of the following issues, the same one as CPython did. +Enhance the translator to support continuation passing +style by integrating technology from the Stackless project. +Implement the necessary runtime system to support +massive parallelism. +Implement a single-threaded, pre-emptive scheduler with +priorities, complementing the OS threads. + +**Task 2** + +Study approaches concerning code size vs. speed trade-offs. +Implement and compare different object layout and memory management strategy +or strategies. +Enhance multimethod dispatching. +Implement schemes of pointer tagging. +Create reports and merge the results back into the optimization effort. +As of general interest, submit the reports as publication. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- DL??? to be defined. Publication. -- DL??? Passing all applicable elements of the standard test suite. +- a version of PyPy that supports Real-time massive parallelism +- report on optimisation results submitted as publications .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- M4 with M3 WP42_ WP44_ +- M3 High performance PyPy, together with WP43_. Outperform the + state-of-the art (Psyco, Stackless). .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Fri Oct 3 10:45:24 2003 @@ -61,4 +61,7 @@ **Milestones and Expected Result** +- M3 High performance PyPy, together with WP43_. Outperform the + state-of-the art (Psyco, Stackless). + .. include:: wp-tableend.asc From tismer at codespeak.net Fri Oct 3 11:22:47 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 11:22:47 +0200 (MEST) Subject: [pypy-svn] rev 1533 - pypy/trunk/doc/funding Message-ID: <20031003092247.6293F5A143@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 11:22:46 2003 New Revision: 1533 Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt Log: updated list of WPs (excluding the numbering) Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 11:22:46 2003 @@ -10,6 +10,8 @@ .. |em| replace:: End month .. |dn| replace:: Deliverable No +Note: The man months have not been inserted, yet. + ===== ===================================================== ===== ==== ==== ==== ==== |wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| ===== ===================================================== ===== ==== ==== ==== ==== @@ -17,45 +19,23 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP20_ The PyPy Interpreter ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP21_ Development and Completion of the PyPy Interpreter 12 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP22_ Porting CPython C-sourcecode to regular Python 12 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP30_ The PyPy Compiler ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP31_ Translation of RPython 8 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP32_ Specific Analysis and Redesign 8 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP33_ Low Level PyPy Runtime 6 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP40_ High-performance PyPy-Python +WP30_ The PyPy Translation ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP41_ Integration of Stackless 9 +WP44_ Dynamic Optimisations ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP42_ Several Object Implementations 12 +WP43_ Translator Optimisations ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP43_ Translator Optimisations 12 +WP42_ Interpreter Optimisations ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP44_ Integration of Psyco 12 +WP49_ Language Research and Extension ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP50_ Validation of PyPy ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP51_ Porting PyPy to an Embedded Device 9 +WP59_ Integration and Configuration ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP52_ Evaluation whether to do a small OS in PyPy 3 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP53_ A small Operating System for an Embedded Device 11 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP54_ Code Generator for SIMD Architecture 9 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP55_ Enhanced Numerical Package 6 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP56_ Load Balancing in a Multi-Processor environment 9 +WP80_ Synchronisation with Standard Python 6 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP60_ Project Documentation and Dissemination 25 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP70_ Maintenance of Tools 10 ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP80_ Synchronisation with Standard Python 6 +WP70_ Project Infrastructure and Tools ===== ===================================================== ===== ==== ==== ==== ==== From guenter at codespeak.net Fri Oct 3 11:26:15 2003 From: guenter at codespeak.net (guenter at codespeak.net) Date: Fri, 3 Oct 2003 11:26:15 +0200 (MEST) Subject: [pypy-svn] rev 1534 - pypy/trunk/doc/funding Message-ID: <20031003092615.6085D5A143@thoth.codespeak.net> Author: guenter Date: Fri Oct 3 11:26:14 2003 New Revision: 1534 Modified: pypy/trunk/doc/funding/20031002-meeting-notes.txt Log: Spelling of Names Modified: pypy/trunk/doc/funding/20031002-meeting-notes.txt ============================================================================== --- pypy/trunk/doc/funding/20031002-meeting-notes.txt (original) +++ pypy/trunk/doc/funding/20031002-meeting-notes.txt Fri Oct 3 11:26:14 2003 @@ -9,8 +9,8 @@ Infrae(?) Dutch Holger Kregel -interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, -anna ravenscroft, gunter janton, samuele pedroni +interested: Tomek Meka, Christian Tismer, Michael Hudson, Tim Peters, Alex Martelli, Dinu Gherman, +Anna Ravenscroft, G?nter Jantzen, Samuele Pedroni Actions From tismer at codespeak.net Fri Oct 3 11:47:04 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 11:47:04 +0200 (MEST) Subject: [pypy-svn] rev 1535 - pypy/trunk/doc/funding Message-ID: <20031003094704.3BAAE5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 11:47:03 2003 New Revision: 1535 Added: pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt (contents, props changed) - copied, changed from rev 1530, pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt (contents, props changed) - copied, changed from rev 1530, pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt Removed: pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt Modified: pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt Log: intermediate, still shuffling and refactoring... Deleted: /pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp41_integrate_stackless.txt Fri Oct 3 11:47:03 2003 +++ (empty file) @@ -1,44 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Integration of Stackless -.. |wp| replace:: WP41 -.. |start| replace:: M2 -.. |p1| replace:: CT -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Z -.. |m3| replace:: 2 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? to be defined. Green threads, pickling. -- DL??? Passing all applicable elements of the standard test suite. - -**Milestones and Expected Result** - -- M3 - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt (from rev 1530, pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Fri Oct 3 11:47:03 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -.. |title| replace:: Several Object Implementations +.. |title| replace:: Interpreter Optimisations .. |wp| replace:: WP42 .. |start| replace:: M2 .. |p1| replace:: X @@ -22,6 +22,8 @@ **Objectives** +Enhancing the efficiency and flexibility of ... + - Providing several object implementations for - general optimisation Deleted: /pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp42_several_obj_impl.txt Fri Oct 3 11:47:03 2003 +++ (empty file) @@ -1,75 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Several Object Implementations -.. |wp| replace:: WP42 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Providing several object implementations for - - - general optimisation - - - application specific alternatives - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -The following objects are mostly independent from any particular low-level run-time -environment. - -* Implement dictionaries as hash-table vs. plain (key, value) lists vs. b-trees, - or with string-only or integer-only keys. Dictionaries with specific - support for "on-change" callbacks (useful for Psyco). - -* Implement strings as plain immutable memory buffers vs. immutable but more - complex data structures (see functional languages) vs. internally - mutable data structures (e.g. Psyco's concatenated strings) - -* Implement ints as machine words vs. two machine words vs. internal longs vs. - external bignum library (investigate if completely unifying ints and - longs is possible in the Python language at this stage). - -* Consider further objects and do multiple implementations of them. - -* Run various performance tests on the above, check for an - overall improvement or application dependency. - -* Create reports and merge the results back into the optimization effort. - As of general interest, submit the reports as publication. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? to be defined. Publication. -- DL??? Passing all applicable elements of the standard test - suite for every tested alternative. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M4 with M3 WP43_ WP44_ - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt (from rev 1530, pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt Fri Oct 3 11:47:03 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -.. |title| replace:: Maintenance of Tools -.. |wp| replace:: WP70 +.. |title| replace:: Integration and Configuration +.. |wp| replace:: WP59 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 @@ -22,37 +22,27 @@ **Objectives** -Supporting the PyPy project by maintaining and enhancing the tools. +XXX write me .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -- Keep the infrastructure up-to-date and develop it further. - - - maintain the Subversion package and track its ongoing development - - - maintain the Subversion repository - - - build extensions for automatic document extraction - - - support email notification via mailing lists - -- Provide a mirror repository which is kept up-to-date and which - can be used in case of failure of the main repository. - -- Take care of regular repository backups. Design a strict backup - policy suitable for the project, and adhere to it. +XXX write me .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +XXX write me + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** +XXX write me + .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt Fri Oct 3 11:47:03 2003 @@ -22,35 +22,41 @@ **Objectives** -Keeping PyPy in sync with the ongoing changes to Standard Python. +Keeping PyPy in sync with potential changes to Standard Python. +Support a subset of the CPython API for compatibility with +extension modules. +Facilitate porting of extension modules to PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -- Monitor the development of Standard Python for its ongoing changes. +**Task 1** -- Check the relevance of the changes concerning the structure of - PyPy. - -- Embed trivial changes with proper testing, notifying the other - concurrent tasks of these changes. - -- Changes which impose larger structural changes must influence - the overall design and be discussed with the whole group. - It is the responsibility of this task to gather such information - as early as possible. - -- Also investigate whether there are tools which could automate - integration of simple changes, partially. +Monitor the development of Standard Python for its ongoing changes. +Check the relevance of the changes concerning the structure of +PyPy. +Embed the relevant changes with proper testing, notifying the other +concurrent tasks of these changes. +Investigate tools which could partially automate +integration of simple changes. + +**Task 2** + +Investigate different solutions to address compatibility with +existing C extensions. +Support a subset of the CPython API. Facilitate porting of +more involved extensions. +Adjust existing interface generators to target PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- Running all tests of PyPy and Stadard Python after every update. +- A version of PyPy that supports a subset of the CPython API. +- A guide describing the porting of C extensions to PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From pedronis at codespeak.net Fri Oct 3 12:14:16 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Fri, 3 Oct 2003 12:14:16 +0200 (MEST) Subject: [pypy-svn] rev 1536 - pypy/trunk/src/pypy/translator Message-ID: <20031003101416.A247E5C3F5@thoth.codespeak.net> Author: pedronis Date: Fri Oct 3 12:14:16 2003 New Revision: 1536 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: getattr(o,'const') => o.const Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Fri Oct 3 12:14:16 2003 @@ -128,6 +128,13 @@ self.putline("%s = %s(*%s, **%s)" % (resultname, argnames[0], argnames[1], argnames[2])) else: + # short-cuts [getattr,] + if op.opname == 'getattr': + attr = op.args[1] + if isinstance(attr,Constant): + self.putline("%s = %s.%s" % (resultname,argnames[0], + attr.value)) + continue opsymbol = self.ops[op.opname] arity = self.oparity[op.opname] assert(arity == len(op.args)) From nico at codespeak.net Fri Oct 3 12:34:10 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Fri, 3 Oct 2003 12:34:10 +0200 (MEST) Subject: [pypy-svn] rev 1537 - pypy/trunk/doc/funding Message-ID: <20031003103410.4B94A5C3F5@thoth.codespeak.net> Author: nico Date: Fri Oct 3 12:34:09 2003 New Revision: 1537 Added: pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt pypy/trunk/doc/funding/project_gantt.png (contents, props changed) Modified: pypy/trunk/doc/funding/project_planning.xml pypy/trunk/doc/funding/project_resources.xml Log: two new workpackages. the png gantt diagram to make things. Added: pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt Fri Oct 3 12:34:09 2003 @@ -0,0 +1,72 @@ +.. include:: crossreferences.asc + +:DELETE:BEGIN: + +participants are Logilab and PBF + +possible: Alex Martelli with Strakt or PBF ? + + +:DELETE:END: + +.. |title| replace:: Aspect Oriented Programming and static checking +.. |wp| replace:: WP100 +.. |start| replace:: M2 +.. |p1| replace:: X +.. |m1| replace:: 0 +.. |p2| replace:: Y +.. |m2| replace:: 0 +.. |p3| replace:: Z +.. |m3| replace:: 0 +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +Implement aspect oriented programming features to +allow for more flexible ways to design software +applications by better separating design concerns. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current aspect-oriented libraries +available from Logilab, to better integrate with the language +and greatly simplify the design and enhance the performance. + +This aspect enabled interpreter will be used to offer +design-by-contract facilities as seen in the Eiffel programming +language and the current aspect-oriented library. It will also +allow us to implement advanced static checking and code +correctness capabilities, thus furthering the work done with +the pychecker and pylint tools. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Implementation of aspect-oriented programming + capabilities in PyPy + +- DL??? Implementation of design-by-contract and advanced + static checking capabilities. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + + +.. include:: wp-tableend.asc Added: pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt Fri Oct 3 12:34:09 2003 @@ -0,0 +1,70 @@ +.. include:: crossreferences.asc + +:DELETE:BEGIN: + +participants are Logilab and DFKI + +roughly 1,5 person each + +--> 3 person total for 1 year (?) + +:DELETE:END: + +.. |title| replace:: Constraint programming for the Semantic Web +.. |wp| replace:: WP90 +.. |start| replace:: +.. |p1| replace:: X +.. |m1| replace:: 0 +.. |p2| replace:: Y +.. |m2| replace:: 0 +.. |p3| replace:: Z +.. |m3| replace:: 0 +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +Implement constraint satisfaction algorithms and +inference engine to allow logic programming for +Semantic Web applications. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current python-logic libraries +available from Logilab to better integrate with the language +and gain important execution speed-ups. + +This logic programming enabled python interpreter will then be +used to further develop the projects related to Semantic Web +applications that are on-going at Logilab and DFKI. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Implementation of constraint satisfaction engine and + inference engine in PyPy + +- DL??? Assessment of benefits obtained from using PyPy over + current tools to further develop Semantic Web projects + at Logilab and DFKI. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + +.. include:: wp-tableend.asc Added: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Fri Oct 3 12:34:09 2003 @@ -1,5 +1,7 @@ - + Modified: pypy/trunk/doc/funding/project_resources.xml ============================================================================== --- pypy/trunk/doc/funding/project_resources.xml (original) +++ pypy/trunk/doc/funding/project_resources.xml Fri Oct 3 12:34:09 2003 @@ -1,9 +1,25 @@ + - +project management -hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker +hacker \ No newline at end of file From tismer at codespeak.net Fri Oct 3 12:36:50 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 12:36:50 +0200 (MEST) Subject: [pypy-svn] rev 1538 - pypy/trunk/doc/funding Message-ID: <20031003103650.C81F05C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 12:36:49 2003 New Revision: 1538 Added: pypy/trunk/doc/funding/B6.7.wp49_language_research.txt (contents, props changed) - copied, changed from rev 1535, pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Log: new packages, small changes Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 12:36:49 2003 @@ -194,10 +194,16 @@ implementations during execution. The goal is to study the efficiency of different approaches, with the possibility to change the default implementation - if favor of a different one, not known in CPython. + in favor of a different one, not known in CPython. Some object layouts will further exist in parallel, if their efficiency is highly application dependant. +XXX: reformulate this. + The following objects are mostly independent from any particular low-level run-time + environment. + + + WP43_: Translator Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It should be identified, which **optimisations** would benefit Modified: pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Fri Oct 3 12:36:49 2003 @@ -22,56 +22,47 @@ **Objectives** -Enhancing the efficiency and flexibility of ... - -- Providing several object implementations for - - - general optimisation - - - application specific alternatives +Building upon the efficiency and flexibility of the code base +developed in WP20_, investigate and compare alternative designs and +implementations. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -The following objects are mostly independent from any particular low-level run-time -environment. +**Task 1** -* Implement dictionaries as hash-table vs. plain (key, value) lists vs. b-trees, - or with string-only or integer-only keys. Dictionaries with specific - support for "on-change" callbacks (useful for Psyco). +Provide alternative implementations of the core objects, +such as dictionaries, strings and integers, with different +trade-offs (speed, size, limitations). -* Implement strings as plain immutable memory buffers vs. immutable but more - complex data structures (see functional languages) vs. internally - mutable data structures (e.g. Psyco's concatenated strings) +**Task 2** -* Implement ints as machine words vs. two machine words vs. internal longs vs. - external bignum library (investigate if completely unifying ints and - longs is possible in the Python language at this stage). +Run performance tests on the above, comparing the different +implementation decisions for a range of platforms and +applications. +Categorize into overall improvement, platform, and application dependency. +Produce and publish reports on the results. -* Consider further objects and do multiple implementations of them. - -* Run various performance tests on the above, check for an - overall improvement or application dependency. +**Task 3** -* Create reports and merge the results back into the optimization effort. - As of general interest, submit the reports as publication. +Merge the results back into the optimization effort. +Where necessary, define heuristics to select implementations +and to switch between them, depending on evolving runtime conditions. +Report on the results and submit as publications. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- DL??? to be defined. Publication. -- DL??? Passing all applicable elements of the standard test - suite for every tested alternative. +- DL??? Publication of statistics. +- DL??? Publication of novel heuristic techniques. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- M4 with M3 WP43_ WP44_ - .. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp49_language_research.txt (from rev 1535, pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp49_language_research.txt Fri Oct 3 12:36:49 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -.. |title| replace:: Integration and Configuration -.. |wp| replace:: WP59 +.. |title| replace:: Language Research and Extension +.. |wp| replace:: WP49 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 From tismer at codespeak.net Fri Oct 3 12:43:23 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 12:43:23 +0200 (MEST) Subject: [pypy-svn] rev 1539 - pypy/trunk/doc/funding Message-ID: <20031003104323.435EB5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 12:43:22 2003 New Revision: 1539 Added: pypy/trunk/doc/funding/B6.7.wp20_core.txt (contents, props changed) - copied, changed from rev 1530, pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt (contents, props changed) - copied, changed from rev 1538, pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Removed: pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt Log: some renamings Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 12:43:22 2003 @@ -17,7 +17,7 @@ ===== ===================================================== ===== ==== ==== ==== ==== WP10_ Coordination and Management 18 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP20_ The PyPy Interpreter +WP20_ The PyPy Core ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP30_ The PyPy Translation ----- ----------------------------------------------------- ----- ---- ---- ---- ---- @@ -25,7 +25,7 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP43_ Translator Optimisations ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP42_ Interpreter Optimisations +WP42_ Core Optimisations ----- ----------------------------------------------------- ----- ---- ---- ---- ---- WP49_ Language Research and Extension ----- ----------------------------------------------------- ----- ---- ---- ---- ---- Copied: pypy/trunk/doc/funding/B6.7.wp20_core.txt (from rev 1530, pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp20_core.txt Fri Oct 3 12:43:22 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -.. |title| replace:: The PyPy Interpreter +.. |title| replace:: The PyPy Core .. |wp| replace:: WP20 .. |start| replace:: 0 .. |p1| replace:: |e| Deleted: /pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp20_interpreter.txt Fri Oct 3 12:43:22 2003 +++ (empty file) @@ -1,46 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: The PyPy Interpreter -.. |wp| replace:: WP20 -.. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building a complete PyPy interpreter. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -This working package consists of the tasks WP21_ WP22_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M1 - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt (from rev 1538, pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt Fri Oct 3 12:43:22 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -.. |title| replace:: Interpreter Optimisations +.. |title| replace:: Core Optimisations .. |wp| replace:: WP42 .. |start| replace:: M2 .. |p1| replace:: X Deleted: /pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp42_interpreter_optimisations.txt Fri Oct 3 12:43:22 2003 +++ (empty file) @@ -1,68 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Interpreter Optimisations -.. |wp| replace:: WP42 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building upon the efficiency and flexibility of the code base -developed in WP20_, investigate and compare alternative designs and -implementations. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Provide alternative implementations of the core objects, -such as dictionaries, strings and integers, with different -trade-offs (speed, size, limitations). - -**Task 2** - -Run performance tests on the above, comparing the different -implementation decisions for a range of platforms and -applications. -Categorize into overall improvement, platform, and application dependency. -Produce and publish reports on the results. - -**Task 3** - -Merge the results back into the optimization effort. -Where necessary, define heuristics to select implementations -and to switch between them, depending on evolving runtime conditions. -Report on the results and submit as publications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Publication of statistics. -- DL??? Publication of novel heuristic techniques. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc From tismer at codespeak.net Fri Oct 3 13:20:51 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 13:20:51 +0200 (MEST) Subject: [pypy-svn] rev 1540 - pypy/trunk/doc/funding Message-ID: <20031003112051.DEABA5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 13:20:51 2003 New Revision: 1540 Added: pypy/trunk/doc/funding/B6.7.wp30_translation.txt (contents, props changed) - copied, changed from rev 1530, pypy/trunk/doc/funding/B6.7.wp30_compiler.txt Removed: pypy/trunk/doc/funding/B6.7.wp30_compiler.txt Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt Log: added time estimates and start/Stop Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 13:20:51 2003 @@ -15,27 +15,27 @@ ===== ===================================================== ===== ==== ==== ==== ==== |wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| ===== ===================================================== ===== ==== ==== ==== ==== -WP10_ Coordination and Management 18 +WP10_ Coordination and Management 24 0 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP20_ The PyPy Core +WP20_ The PyPy Core 36 0 9 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP30_ The PyPy Translation +WP30_ The PyPy Translation 33 0 9 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP44_ Dynamic Optimisations +WP44_ Dynamic Optimisations 36 9 18 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP43_ Translator Optimisations +WP43_ Translator Optimisations 27 9 18 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP42_ Core Optimisations +WP42_ Core Optimisations 24 9 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP49_ Language Research and Extension +WP49_ Language Research and Extension NC? 9 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP50_ Validation of PyPy +WP50_ Validation of PyPy 27 18 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP59_ Integration and Configuration +WP59_ Integration and Configuration 27 18 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP80_ Synchronisation with Standard Python 6 +WP80_ Synchronisation with Standard Python 6 0 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP60_ Project Documentation and Dissemination 25 +WP60_ Project Documentation and Dissemination 24 0 24 ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP70_ Project Infrastructure and Tools +WP70_ Project Infrastructure and Tools 24 0 24 ===== ===================================================== ===== ==== ==== ==== ==== Deleted: /pypy/trunk/doc/funding/B6.7.wp30_compiler.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp30_compiler.txt Fri Oct 3 13:20:51 2003 +++ (empty file) @@ -1,46 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: The PyPy Compiler -.. |wp| replace:: WP30 -.. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building the translator and Bootstrapping PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -This working package consists of the tasks WP31_ WP32_ WP33_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M2 - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp30_translation.txt (from rev 1530, pypy/trunk/doc/funding/B6.7.wp30_compiler.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp30_compiler.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp30_translation.txt Fri Oct 3 13:20:51 2003 @@ -1,6 +1,6 @@ .. include:: crossreferences.asc -.. |title| replace:: The PyPy Compiler +.. |title| replace:: The PyPy Translation .. |wp| replace:: WP30 .. |start| replace:: 0 .. |p1| replace:: |e| @@ -22,14 +22,64 @@ **Objectives** -Building the translator and Bootstrapping PyPy. +Analysis and translation of the PyPy core (WP20_) into +efficient low-level code (C, Pyrex, Java, others). +Providing a Runtime Library for the translated versions +of PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -This working package consists of the tasks WP31_ WP32_ WP33_. +*Part a): Code Analysis* + +- Analyse code to produce the relevant typing information. +- Investigate whether we can use the annotation object space + only or if additional AST-based control flow analysis is needed. +- Give a formal definition of RPython. + +*Part b): Code Production* + +- Compare different low-level environments that + we could target (C, Pyrex, others?). Select at least + one suitable target. +- Produce low-level code out of the data gathered in Part a). +- Again investigate how this is best done (AST-guided translation or + reverse-engeneering of the low-level control flow gathered by the + annotation object space). +- Provide some measure for the efficiency of the generated + code, in comparison to Standard Python. + +Note that this task can actually start earlier than M1, but +finally becomes dependent from it. + + +**Part a): Specific Analysis and Redesign** + +- Investigate the particular problems that the + global translation of PyPy is going to raise. +- Enhance and redesign parts of PyPy as needed + to give best support to the translation of RPython. +- Re-iterate this until we agree to have reached + an optimum solution. + + +In order to give a working environment to the translated RPython +program, we need to build the low-level-specific **run-time** +components of PyPy. + +- Design the object layout and implement it. +- Decide about memory management and implement it. +- Consider threading support and implement it. Make sure + that the other components are thread-aware. +- Design and implement an efficient multimethod dispatch. + +The target language is not yet decided on. We might go different +paths at the same time. +If producing C code is a target, important +parts can be directly re-used from CPython. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc @@ -41,6 +91,10 @@ **Milestones and Expected Result** -- M2 +- DL???: Tool for Analysis of restricted Python Programs +- DL???: Passing all applicable elements of the standard test suite. + +DL??? Runtime Library for PyPy +DL??? Passing all applicable elements of the standard test suite. .. include:: wp-tableend.asc From lac at codespeak.net Fri Oct 3 13:27:56 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 3 Oct 2003 13:27:56 +0200 (MEST) Subject: [pypy-svn] rev 1541 - pypy/trunk/doc/funding Message-ID: <20031003112756.BF4AE5C3F5@thoth.codespeak.net> Author: lac Date: Fri Oct 3 13:27:55 2003 New Revision: 1541 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: I just wrote this here, and discovered it belongs in 3.2 not 3.0. No matter. Fix later, save the work now. Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 3 13:27:55 2003 @@ -17,8 +17,92 @@ Potential impact =================== -Python is ranked the sixth most popular computer language in the -world, used by tens of thousands of European programmers. Thus a new +Python and extremely popular Very-High-Level, Object-Oriented, +programming language. It is always difficult to measure how many +people are using a programming language, but of course, we try. +Python is generally ranked the sixth most popular computer language in +the world. Only Java, Visual Basic, C, C++, and Perl are believed to +have more users. + +The Python FAQ, available at the python language home site of +python.org says: +------------------------------------------------------- + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. +------------------------------------------------------- +Googling for 'python programming' gives 1,540,000 hits. ('Python' gives +ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are +the 'bleeding edge' developers, who were interested in the new +release of Python first made available at the end of August. There +are, of course, many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. +About one third of them are using the documentation, which is a +fairly good indicator that they are trying to use the language. +Number of unique IP addresses per month is about 350,000 at this point, +and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +1) One user may use multiple machines (e.g. home & work & cafe) +2) Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +3) Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already dowloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books _Learning Python_, +_Python in a Nutshell_ and _The Python Cookbook_ are to be considered +relevant. Speaking of books, sales statistics of _The Essential +Jython_, targetted at users of the Python version that compiles to +the Java Virtual Machine indicate that there are at least 10 thousand +Jython users worldwide. + +For comparison, there are something like 12 million programmers world-wide +and roughly 50% of those use Visual Basic (according to International Data +Corp). In March 2002, Borland said Java had about 1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a self-customising PyPy which . We can produce Object Spaces which +implement Aspect Oriented Programming and Design By Contract, hot new +topics in computer science research, but which are rarely seen in +industry because existing popular languages do not support them. + +NICOLAS HELP ME WRITE STUFF HERE + +When we are successful, we will have an immediate, large impact as +those 175,000 Python users will all get an improved language. + + + implementation of the language with substantial improvements will have an immediate direct effect on Eropean competitiveness. Moreover, the planned improvements directly target the handheld, mobile, and @@ -196,3 +280,4 @@ re: 'Indicate what account is taken of other national or international research activities.' -- Samuele and Armin read the literature all the time. What do I say? +ppppppppppppppp \ No newline at end of file From tismer at codespeak.net Fri Oct 3 13:46:13 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 13:46:13 +0200 (MEST) Subject: [pypy-svn] rev 1542 - pypy/trunk/doc/funding Message-ID: <20031003114613.2E6995C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 13:46:12 2003 New Revision: 1542 Removed: pypy/trunk/doc/funding/B6.7.wp31_translation_of_rpython.txt pypy/trunk/doc/funding/B6.7.wp32_bootstrap_redesign.txt pypy/trunk/doc/funding/B6.7.wp33_bootstrap_runtime.txt Modified: pypy/trunk/doc/funding/B6.7.wp30_translation.txt Log: wp30 is ready, clean-up. Modified: pypy/trunk/doc/funding/B6.7.wp30_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp30_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp30_translation.txt Fri Oct 3 13:46:12 2003 @@ -32,69 +32,40 @@ **Description of work** -*Part a): Code Analysis* +**Task 1** -- Analyse code to produce the relevant typing information. -- Investigate whether we can use the annotation object space - only or if additional AST-based control flow analysis is needed. -- Give a formal definition of RPython. - -*Part b): Code Production* - -- Compare different low-level environments that - we could target (C, Pyrex, others?). Select at least - one suitable target. -- Produce low-level code out of the data gathered in Part a). -- Again investigate how this is best done (AST-guided translation or - reverse-engeneering of the low-level control flow gathered by the - annotation object space). -- Provide some measure for the efficiency of the generated - code, in comparison to Standard Python. - -Note that this task can actually start earlier than M1, but -finally becomes dependent from it. - - -**Part a): Specific Analysis and Redesign** - -- Investigate the particular problems that the - global translation of PyPy is going to raise. -- Enhance and redesign parts of PyPy as needed - to give best support to the translation of RPython. -- Re-iterate this until we agree to have reached - an optimum solution. - +Create a code analysis tool for a subset of the Python +language (RPython). Coordinate the definition of RPython +with WP20_, being the implementation language of the core. -In order to give a working environment to the translated RPython -program, we need to build the low-level-specific **run-time** -components of PyPy. +**Task 2** + +Produce a tool chain, capable of extracting the RPython +byte code from the core, translating it into low-level +code (C, ...), and compiling it. +Use the data gathered in Task 1 to drive the translation +process. -- Design the object layout and implement it. -- Decide about memory management and implement it. -- Consider threading support and implement it. Make sure - that the other components are thread-aware. -- Design and implement an efficient multimethod dispatch. - -The target language is not yet decided on. We might go different -paths at the same time. -If producing C code is a target, important -parts can be directly re-used from CPython. +**Task 3** +In order to give a working environment to the translated RPython +program, build the low-level-specific runtime components of PyPy. +For the C PyPy runtime, important parts can be directly re-used from CPython. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +- Tool chain for translating and compiling arbitrary RPython programs. +- A compiled, self-contained version of PyPy. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- DL???: Tool for Analysis of restricted Python Programs -- DL???: Passing all applicable elements of the standard test suite. - -DL??? Runtime Library for PyPy -DL??? Passing all applicable elements of the standard test suite. +- Complete implementation of Python, conforming to the language + definition and passing 90% of the official Python test suite. .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp31_translation_of_rpython.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp31_translation_of_rpython.txt Fri Oct 3 13:46:12 2003 +++ (empty file) @@ -1,72 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Translation of RPython -.. |wp| replace:: WP31 -.. |start| replace:: M1 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Ability to translate arbitrary RPython source code (e.g. - the one produced in WP21_ into low-level code (C, Pyrex, Java, others). -- Creation of a stand-alone, not-PyPy-related tool for general - optimization of arbitrary but suitably restricted Python application or - parts thereof. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -*Part a): Code Analysis* - -- Analyse code to produce the relevant typing information. -- Investigate whether we can use the annotation object space - only or if additional AST-based control flow analysis is needed. -- Give a formal definition of RPython. - -*Part b): Code Production* - -- Compare different low-level environments that - we could target (C, Pyrex, others?). Select at least - one suitable target. -- Produce low-level code out of the data gathered in Part a). -- Again investigate how this is best done (AST-guided translation or - reverse-engeneering of the low-level control flow gathered by the - annotation object space). -- Provide some measure for the efficiency of the generated - code, in comparison to Standard Python. - -Note that this task can actually start earlier than M1, but -finally becomes dependent from it. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL???: Tool for Analysis of restricted Python Programs -- DL???: Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- Initial Complete Self-Contained PyPy Interpreter -- Initial Measures of Efficiency Deleted: /pypy/trunk/doc/funding/B6.7.wp32_bootstrap_redesign.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp32_bootstrap_redesign.txt Fri Oct 3 13:46:12 2003 +++ (empty file) @@ -1,57 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Specific Analysis and Redesign -.. |wp| replace:: WP32 -.. |start| replace:: WP31_ -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Putting interpreter (WP21_, WP22_) and translator (WP31_) together. -- Enhancing the PyPy Design. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Part a): Specific Analysis and Redesign** - -- Investigate the particular problems that the - global translation of PyPy is going to raise. -- Enhance and redesign parts of PyPy as needed - to give best support to the translation of RPython. -- Re-iterate this until we agree to have reached - an optimum solution. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M2 with WP33_ - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp33_bootstrap_runtime.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp33_bootstrap_runtime.txt Fri Oct 3 13:46:12 2003 +++ (empty file) @@ -1,62 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Low Level PyPy Runtime -.. |wp| replace:: WP33 -.. |start| replace:: WP31_ -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -- Providing a Runtime Library for PyPy - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -In order to give a working environment to the translated RPython -program, we need to build the low-level-specific **run-time** -components of PyPy. - -- Design the object layout and implement it. -- Decide about memory management and implement it. -- Consider threading support and implement it. Make sure - that the other components are thread-aware. -- Design and implement an efficient multimethod dispatch. - -The target language is not yet decided on. We might go different -paths at the same time. -If producing C code is a target, important -parts can be directly re-used from CPython. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -DL??? Runtime Library for PyPy -DL??? Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M2 with WP32_ - -.. include:: wp-tableend.asc From tismer at codespeak.net Fri Oct 3 14:28:22 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 14:28:22 +0200 (MEST) Subject: [pypy-svn] rev 1543 - pypy/trunk/doc/funding Message-ID: <20031003122822.160785C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 14:28:21 2003 New Revision: 1543 Modified: pypy/trunk/doc/funding/B6.7.wp20_core.txt Log: finished the last WP we have to do. Some are still missing. (see XXX contents) Modified: pypy/trunk/doc/funding/B6.7.wp20_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp20_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp20_core.txt Fri Oct 3 14:28:21 2003 @@ -22,25 +22,48 @@ **Objectives** -Building a complete PyPy interpreter. +Building a complete Python interpreter written in Python, +using a subset of Python that avoids dynamic features +which would impair the objectives of WP30_ (RPython). .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -This working package consists of the tasks WP21_ WP22_. +**Task 1** + +Design and implement the PyPy bytecode interpreter and +build an object space library in RPython. +The resulting interpreter must cover the complete Python +language specification. + +**Task 2** + +Port the built-in Python library to PyPy +(functions, types and modules currently implemented in C). +Decide on a case-by-case basis which features are to +be implemented using RPython or just general Python. + +**Task 3** + +Implement a Python parser and bytecode compiler in +Python. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +- DL01: First partial Python Implementation running on top of CPython. +- DL02: Complete Python implementation running on top of CPython. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- M1 +- M1 A partial Python implementation that passses 75% of the official + Python test suite that don't depend on extension modules. .. include:: wp-tableend.asc From lac at codespeak.net Fri Oct 3 15:04:26 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 3 Oct 2003 15:04:26 +0200 (MEST) Subject: [pypy-svn] rev 1544 - pypy/trunk/doc/funding Message-ID: <20031003130426.441F45C3F5@thoth.codespeak.net> Author: lac Date: Fri Oct 3 15:04:25 2003 New Revision: 1544 Added: pypy/trunk/doc/funding/B3.2.strategic_impact.txt Log: Ok, now we have the strategic impact part that says -- this is not of academic interest only. Added: pypy/trunk/doc/funding/B3.2.strategic_impact.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B3.2.strategic_impact.txt Fri Oct 3 15:04:25 2003 @@ -0,0 +1,109 @@ +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +B.3.2 Strategic impact +====================== + +PyPy will have a significant strategic impact throughout the IT +sector. It produces immensely useful, practical results which shall +be immediately exploited by Python developers world-wide. While it +addresses issues which have hitherto mostly remained the special +province of academia, and significantly enhances the State-of-the-Art, +it is not a project that will only satisfy intellectual curiosity. + +Python and extremely popular Very-High-Level, Object-Oriented, +programming language. It is always difficult to measure how many +people are using a programming language, but of course, we try. +Python is generally ranked the sixth most popular computer language in +the world. Only Java, Visual Basic, C, C++, and Perl are believed to +have more users. + +The Python FAQ, available at the python language home site of +python.org says: +------------------------------------------------------- + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. +------------------------------------------------------- +Googling for 'python programming' gives 1,540,000 hits. ('Python' gives +ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are +the 'bleeding edge' developers, who were interested in the new +release of Python first made available at the end of August. There +are, of course, many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. +About one third of them are using the documentation, which is a +fairly good indicator that they are trying to use the language. +Number of unique IP addresses per month is about 350,000 at this point, +and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +- One user may use multiple machines (e.g. home & work & cafe) +- Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +- Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already dowloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books _Learning Python_, +_Python in a Nutshell_ and _The Python Cookbook_ are any indication. +Speaking of books, sales statistics of _The Essential Jython_, +targetted at users of the Python version that compiles to the Java +Virtual Machine indicate that there are at least 10 thousand Jython +users worldwide. + +For comparison, there are something like 12 million programmers world-wide +and roughly 50% of those use Visual Basic (according to International Data +Corp). In March 2002, Borland said Java had about 1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. + +When we are successful, we will have an immediate, large impact as +those 175,000 Python users will all get an improved language. From lac at codespeak.net Fri Oct 3 15:30:28 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Fri, 3 Oct 2003 15:30:28 +0200 (MEST) Subject: [pypy-svn] rev 1545 - pypy/trunk/doc/funding Message-ID: <20031003133028.2ADEB5C3F5@thoth.codespeak.net> Author: lac Date: Fri Oct 3 15:30:27 2003 New Revision: 1545 Added: pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: adding new packages prior to editing them extensively Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 3 15:30:27 2003 @@ -17,8 +17,28 @@ Potential impact =================== + +Python is an extremely popular Very-High-Level, Object-Oriented, +programming language. + Python and extremely popular Very-High-Level, Object-Oriented, -programming language. It is always difficult to measure how many +pro +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. +gramming language. + +It is always difficult to measure how many people are using a programming language, but of course, we try. Python is generally ranked the sixth most popular computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to Added: pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research Fri Oct 3 15:30:27 2003 @@ -0,0 +1,199 @@ +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +ppppppppppppppp \ No newline at end of file Added: pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade Fri Oct 3 15:30:27 2003 @@ -0,0 +1,199 @@ +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +ppppppppppppppp \ No newline at end of file From arigo at codespeak.net Fri Oct 3 17:41:29 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 3 Oct 2003 17:41:29 +0200 (MEST) Subject: [pypy-svn] rev 1546 - pypy/trunk/doc Message-ID: <20031003154129.2B2F95C3F5@thoth.codespeak.net> Author: arigo Date: Fri Oct 3 17:41:28 2003 New Revision: 1546 Added: pypy/trunk/doc/nested_whiles.pdf Log: Demo control flow graph Added: pypy/trunk/doc/nested_whiles.pdf ============================================================================== --- (empty file) +++ pypy/trunk/doc/nested_whiles.pdf Fri Oct 3 17:41:28 2003 @@ -0,0 +1,81 @@ +digraph test { + node [label="\N", fontname=Times]; + edge [fontname=Times]; + graph [bb="0,0,1369,3108"]; + NodeBranch25 [label="Branch\nargs=[]", shape=diamond, pos="287,3064", width="1.56", height="1.00"]; + NodeBasicBlock26 [label="EggBlock\noperations=(add(var(v70), const(1)) -> var(v87), add(var(v69), const('.')) -> var(v88))\nbooloutcome=True\ninput_args=\ +[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]", shape=box, pos="287,2706", width="7.97", height="1.17"]; + NodeBasicBlock21 [label="SpamBlock\noperations=()\ninput_args=[var(v95), var(v96), var(v97), var(v98), var(v99), var(v100)]\nlocals=[var(v95), var(v96), \ +var(v97), var(v98), var(v99), var(v100)]", shape=box, pos="568,1798", width="6.83", height="0.94"]; + NodeBranch22 [label="Branch\nargs=[var(v95), var(v96), var(v97), var(v98), var(v99)]", shape=diamond, pos="568,1672", width="7.67", height="1.00"]; + NodeConditionalBranch5 [label="ConditionalBranch\ncondition=var(v64)", shape=diamond, pos="526,1152", width="3.17", height="1.00"]; + NodeBranch6 [label="Branch\nargs=[]", shape=diamond, pos="516,1024", width="1.56", height="1.00"]; + NodeBranch13 [label="Branch\nargs=[]", shape=diamond, pos="646,1024", width="1.56", height="1.00"]; + NodeBranch8 [label="Branch\nargs=[var(v59), var(v60), var(v61), var(v62), var(v63), var(v64)]", shape=diamond, pos="394,756", width="8.92", height="1.00"]; + NodeBasicBlock9 [label="SpamBlock\noperations=()\ninput_args=[var(v75), var(v76), var(v77), var(v78), var(v79), var(v80)]\nlocals=[var(v75), var(v76), v\ +ar(v77), var(v78), var(v79), var(v80)]", shape=box, pos="394,578", width="6.78", height="0.94"]; + NodeBasicBlock2 [label="SpamBlock\noperations=()\ninput_args=[var(v17), var(v18)]\ndead=True\nlocals=[var(v17), var(v18)]", shape=box, pos="1088,1538", width="3.08", height="1.17"]; + NodeBranch3 [label="Branch\nargs=[var(v17), var(v18), const(''), const(None), const(5)]", shape=diamond, pos="1088,1404", width="7.81", height="1.00"]; + NodeBasicBlock19 [label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]", shape=box, pos="489,2058", width="5.31", height="1.17"]; + NodeBasicBlock16 [label="SpamBlock\noperations=(lt(var(v70), var(v68)) -> var(v73),)\ninput_args=[var(v67), var(v68), var(v69), var(v70), var(v71)]\nloca\ +ls=[var(v67), var(v68), var(v69), var(v70), var(v71)]", shape=box, pos="317,2446", width="5.83", height="0.94"]; + NodeBranch20 [label="Branch\nargs=[var(v67), var(v68), var(v69), var(v70), var(v71), var(v73)]", shape=diamond, pos="575,1924", width="8.92", height="1.00"]; + NodeBranch18 [label="Branch\nargs=[]", shape=diamond, pos="492,2192", width="1.56", height="1.00"]; + NodeEndBranch12 [label="EndBranch\nreturnvalue=var(v83)", shape=circle, pos="394,122", width="3.17", height="3.17"]; + NodeBasicBlock7 [label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]", shape=box, pos="510,890", width="5.31", height="1.17"]; + NodeBasicBlock4 [label="SpamBlock\noperations=(gt(var(v63), const(0)) -> var(v64),)\ninput_args=[var(v59), var(v60), var(v61), var(v62), var(v63)]\nloca\ +ls=[var(v59), var(v60), var(v61), var(v62), var(v63)]", shape=box, pos="536,1278", width="5.83", height="0.94"]; + NodeBasicBlock23 [label="SpamBlock\noperations=(add(var(v104), const('!')) -> var(v108),)\ninput_args=[var(v102), var(v103), var(v104), var(v105), var(v1\ +06)]\nlocals=[var(v102), var(v103), var(v104), var(v105), var(v106)]", shape=box, pos="627,1538", width="6.22", height="0.94"]; + NodeBranch24 [label="Branch\nargs=[var(v102), var(v103), var(v108), var(v105), var(v106)]", shape=diamond, pos="495,1404", width="8.17", height="1.00"]; + NodeBranch27 [label="Branch\nargs=[var(v67), var(v68), var(v88), var(v87), var(v71)]", shape=diamond, pos="480,2572", width="7.58", height="1.00"]; + nested_whiles [label="FunctionGraph\n\l def nested_whiles(i, j):\l s = ''\l z = 5\l while z > 0:\l z = z - 1\l \ + u = i\l while u < j:\l u = u + 1\l s = s + '.'\l s = s + '!'\l \ + return s\l\nfunctionname='nested_whiles'", shape=box, pos="606,2888", width="3.08", height="3.39"]; + NodeBasicBlock0 [label="SpamBlock\noperations=()\ninput_args=[var(v15), var(v16)]\nlocals=[var(v15), var(v16)]", shape=box, pos="943,1798", width="3.08", height="0.94"]; + NodeBasicBlock14 [label="EggBlock\noperations=(sub(var(v63), const(1)) -> var(v66),)\nbooloutcome=True\ninput_args=[]\nlocals=[var(v59), var(v60), var(v6\ +1), var(v62), var(v63)]", shape=box, pos="910,890", width="5.31", height="1.17"]; + NodeBranch10 [label="Branch\nargs=[var(v75), var(v76), var(v77), var(v78), var(v79)]", shape=diamond, pos="394,452", width="7.69", height="1.00"]; + NodeConditionalBranch17 [label="ConditionalBranch\ncondition=var(v73)", shape=diamond, pos="517,2320", width="3.11", height="1.00"]; + NodeBasicBlock11 [label="SpamBlock\noperations=()\ninput_args=[var(v81), var(v82), var(v83), var(v84), var(v85)]\nlocals=[var(v81), var(v82), var(v83), v\ +ar(v84), var(v85)]", shape=box, pos="394,326", width="5.81", height="0.94"]; + NodeBranch1 [label="Branch\nargs=[var(v15), var(v16)]", shape=diamond, pos="997,1672", width="3.75", height="1.00"]; + NodeBranch15 [label="Branch\nargs=[var(v59), var(v60), var(v61), var(v59), var(v66)]", shape=diamond, pos="741,666", width="7.64", height="1.00"]; + NodeBranch25 -> NodeBasicBlock26 [style=solid, label=target, pos="e,287,2748 287,3028 287,2964 287,2832 287,2759", lp="314,2888"]; + NodeBasicBlock21 -> NodeBranch22 [style=solid, label=branch, pos="e,568,1708 568,1764 568,1750 568,1733 568,1718", lp="599,1736"]; + NodeConditionalBranch5 -> NodeBranch6 [style=dashed, label=elsebranch, pos="e,519,1058 523,1117 522,1102 521,1084 520,1068", lp="563,1088"]; + NodeConditionalBranch5 -> NodeBranch13 [style=dashed, label=ifbranch, pos="e,636,1054 570,1130 584,1121 599,1110 610,1098 619,1088 626,1074 632,1062", lp="658,1088"]; + NodeBranch8 -> NodeBasicBlock9 [style=solid, label=target, pos="e,394,612 394,720 394,692 394,652 394,622", lp="421,666"]; + NodeBasicBlock2 -> NodeBranch3 [style=solid, label=branch, pos="e,1088,1440 1088,1496 1088,1481 1088,1464 1088,1449", lp="1119,1468"]; + NodeBasicBlock19 -> NodeBasicBlock16 [style=dotted, label=prevblock, weight=0, pos="e,342,2412 458,2100 447,2117 436,2137 427,2156 380,2256 401,2294 353,2394 351,2397 349,2401 347,2404", lp="435,2256"]; + NodeBasicBlock19 -> NodeBranch20 [style=solid, label=branch, weight=0, pos="e,553,1958 516,2016 526,2000 538,1982 548,1966", lp="570,1988"]; + NodeBranch18 -> NodeBasicBlock19 [style=solid, label=target, weight=0, pos="e,490,2100 491,2156 491,2142 490,2125 490,2110", lp="517,2128"]; + NodeBasicBlock7 -> NodeBasicBlock4 [style=dotted, label=prevblock, weight=0, pos="e,426,1244 476,932 435,990 373,1096 403,1188 410,1209 414,1224 421,1237", lp="442,1088"]; + NodeBasicBlock7 -> NodeBranch8 [style=solid, label=branch, weight=0, pos="e,423,789 474,848 460,831 443,813 429,796", lp="489,820"]; + NodeBasicBlock23 -> NodeBranch24 [style=solid, label=branch, weight=0, pos="e,527,1436 593,1504 575,1485 552,1462 534,1443", lp="599,1468"]; + NodeBranch27 -> NodeBasicBlock16 [style=solid, label=target, weight=0, pos="e,361,2480 440,2541 418,2525 392,2504 369,2486", lp="434,2508"]; + NodeBranch20 -> NodeBasicBlock21 [style=solid, label=target, weight=0, pos="e,570,1832 573,1888 572,1874 571,1857 571,1842", lp="598,1860"]; + nested_whiles -> NodeBasicBlock0 [style=solid, label=startblock, weight=0, pos="e,946,1832 717,2792 768,2743 823,2678 854,2608 974,2337 957,1968 947,1842", lp="977,2320"]; + NodeBranch13 -> NodeBasicBlock14 [style=solid, label=target, weight=0, pos="e,719,932 639,992 637,978 639,961 649,950 650,948 676,942 711,934", lp="676,960"]; + NodeBasicBlock9 -> NodeBranch10 [style=solid, label=branch, weight=0, pos="e,394,488 394,544 394,530 394,513 394,498", lp="425,516"]; + NodeBranch6 -> NodeBasicBlock7 [style=solid, label=target, weight=0, pos="e,512,932 514,989 514,975 513,958 513,942", lp="539,960"]; + NodeBasicBlock16 -> NodeConditionalBranch17 [style=solid, label=branch, weight=0, pos="e,479,2344 371,2412 402,2393 442,2367 471,2349", lp="459,2384"]; + NodeBasicBlock4 -> NodeConditionalBranch5 [style=solid, label=branch, weight=0, pos="e,480,1174 466,1244 461,1239 456,1233 452,1226 442,1208 455,1192 472,1179", lp="483,1216"]; + NodeBasicBlock11 -> NodeEndBranch12 [style=solid, label=branch, weight=0, pos="e,394,236 394,292 394,279 394,263 394,246", lp="425,264"]; + NodeConditionalBranch17 -> NodeBranch18 [style=dashed, label=elsebranch, weight=0, pos="e,498,2224 510,2286 507,2270 503,2250 500,2233", lp="549,2256"]; + NodeConditionalBranch17 -> NodeBranch25 [style=dashed, label=ifbranch, weight=0, pos="e,312,3044 525,2354 529,2371 534,2392 536,2412 539,2442 547,2452 536,2480 531,2490 522,2487 518,2498 514,2506 511,2511 518,2518 \ +555,2557 724,2496 762,2536 783,2559 783,2584 762,2608 733,2638 603,2595 575,2626 563,2638 579,2647 583,2664 590,2700 606,2719 58\ +3,2748 554,2781 521,2740 486,2766 383,2838 421,2911 344,3010 337,3019 327,3029 319,3037", lp="813,2572"]; + NodeBasicBlock0 -> NodeBranch1 [style=solid, label=branch, weight=0, pos="e,983,1705 958,1764 965,1749 973,1730 980,1714", lp="1003,1736"]; + NodeBranch3 -> NodeBasicBlock4 [style=solid, label=target, weight=0, pos="e,684,1312 987,1381 905,1363 788,1336 693,1314", lp="880,1340"]; + NodeBasicBlock26 -> NodeBasicBlock16 [style=dotted, label=prevblock, weight=0, pos="e,183,2480 175,2664 152,2650 130,2631 116,2608 100,2580 99,2562 116,2536 130,2514 152,2497 174,2485", lp="160,2572"]; + NodeBasicBlock26 -> NodeBranch27 [style=solid, label=branch, weight=0, pos="e,437,2602 348,2664 374,2646 404,2625 430,2607", lp="431,2636"]; + NodeBranch15 -> NodeBasicBlock16 [style=solid, label=target, weight=0, pos="e,307,2412 747,701 750,730 748,769 724,792 700,813 468,804 437,810 379,820 350,804 310,848 149,1021 219,1132 192,1368 148,1771 2\ +66,2257 305,2403", lp="212,1608"]; + NodeBranch24 -> NodeBasicBlock4 [style=solid, label=target, weight=0, pos="e,462,1312 458,1372 447,1359 440,1344 448,1330 450,1326 453,1322 456,1319", lp="475,1340"]; + NodeBasicBlock14 -> NodeBasicBlock4 [style=dotted, label=prevblock, weight=0, pos="e,582,1244 877,932 830,992 738,1103 649,1188 630,1206 609,1223 589,1238", lp="792,1088"]; + NodeBasicBlock14 -> NodeBranch15 [style=solid, label=branch, weight=0, pos="e,766,699 878,848 847,808 802,748 773,708", lp="894,820"]; + NodeBranch1 -> NodeBasicBlock2 [style=solid, label=target, weight=0, pos="e,1060,1580 1018,1641 1028,1625 1042,1606 1054,1588", lp="1071,1608"]; + NodeBranch22 -> NodeBasicBlock23 [style=solid, label=target, weight=0, pos="e,612,1572 583,1638 591,1621 600,1599 608,1581", lp="625,1608"]; + NodeBranch10 -> NodeBasicBlock11 [style=solid, label=target, weight=0, pos="e,394,360 394,416 394,402 394,385 394,370", lp="421,388"]; +} From arigo at codespeak.net Fri Oct 3 17:44:23 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 3 Oct 2003 17:44:23 +0200 (MEST) Subject: [pypy-svn] rev 1547 - pypy/trunk/doc Message-ID: <20031003154423.8385B5C3F5@thoth.codespeak.net> Author: arigo Date: Fri Oct 3 17:44:22 2003 New Revision: 1547 Modified: pypy/trunk/doc/nested_whiles.pdf Log: fixed, sorry Modified: pypy/trunk/doc/nested_whiles.pdf ============================================================================== Files pypy/trunk/doc/nested_whiles.pdf (original) and pypy/trunk/doc/nested_whiles.pdf Fri Oct 3 17:44:22 2003 differ From arigo at codespeak.net Fri Oct 3 17:47:47 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 3 Oct 2003 17:47:47 +0200 (MEST) Subject: [pypy-svn] rev 1548 - pypy/trunk/doc Message-ID: <20031003154747.B12EF5C3F5@thoth.codespeak.net> Author: arigo Date: Fri Oct 3 17:47:46 2003 New Revision: 1548 Added: pypy/trunk/doc/nested_whiles.dot Log: Dot source of the example graph Added: pypy/trunk/doc/nested_whiles.dot ============================================================================== --- (empty file) +++ pypy/trunk/doc/nested_whiles.dot Fri Oct 3 17:47:46 2003 @@ -0,0 +1,69 @@ + +digraph test { +node [fontname=Times]; +edge [fontname=Times]; +NodeBranch25 [shape=diamond, label="Branch\nargs=[]"]; +edge [style=solid, label="target"]; NodeBranch25 -> NodeBasicBlock26; +NodeBasicBlock21 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v95), var(v96), var(v97), var(v98), var(v99), var(v100)]\nlocals=[var(v95), var(v96), var(v97), var(v98), var(v99), var(v100)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock21 -> NodeBranch22; +NodeConditionalBranch5 [shape=diamond, label="ConditionalBranch\ncondition=var(v64)"]; +edge [style=dashed, label="elsebranch"]; NodeConditionalBranch5 -> NodeBranch6; +edge [style=dashed, label="ifbranch"]; NodeConditionalBranch5 -> NodeBranch13; +NodeBranch8 [shape=diamond, label="Branch\nargs=[var(v59), var(v60), var(v61), var(v62), var(v63), var(v64)]"]; +edge [style=solid, label="target"]; NodeBranch8 -> NodeBasicBlock9; +NodeBasicBlock2 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v17), var(v18)]\ndead=True\nlocals=[var(v17), var(v18)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock2 -> NodeBranch3; +NodeBasicBlock19 [shape=box, label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; +edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock19 -> NodeBasicBlock16; +edge [style=solid, label="branch"]; NodeBasicBlock19 -> NodeBranch20; +NodeBranch18 [shape=diamond, label="Branch\nargs=[]"]; +edge [style=solid, label="target"]; NodeBranch18 -> NodeBasicBlock19; +NodeEndBranch12 [shape=circle, label="EndBranch\nreturnvalue=var(v83)"]; + +NodeBasicBlock7 [shape=box, label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; +edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock7 -> NodeBasicBlock4; +edge [style=solid, label="branch"]; NodeBasicBlock7 -> NodeBranch8; +NodeBasicBlock23 [shape=box, label="SpamBlock\noperations=(add(var(v104), const('!')) -> var(v108),)\ninput_args=[var(v102), var(v103), var(v104), var(v105), var(v106)]\nlocals=[var(v102), var(v103), var(v104), var(v105), var(v106)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock23 -> NodeBranch24; +NodeBranch27 [shape=diamond, label="Branch\nargs=[var(v67), var(v68), var(v88), var(v87), var(v71)]"]; +edge [style=solid, label="target"]; NodeBranch27 -> NodeBasicBlock16; +NodeBranch20 [shape=diamond, label="Branch\nargs=[var(v67), var(v68), var(v69), var(v70), var(v71), var(v73)]"]; +edge [style=solid, label="target"]; NodeBranch20 -> NodeBasicBlock21; +nested_whiles [shape=box, label="FunctionGraph\n\l def nested_whiles(i, j):\l s = ''\l z = 5\l while z > 0:\l z = z - 1\l u = i\l while u < j:\l u = u + 1\l s = s + '.'\l s = s + '!'\l return s\l\nfunctionname='nested_whiles'"]; +edge [style=solid, label="startblock"]; nested_whiles -> NodeBasicBlock0; +NodeBranch13 [shape=diamond, label="Branch\nargs=[]"]; +edge [style=solid, label="target"]; NodeBranch13 -> NodeBasicBlock14; +NodeBasicBlock9 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v75), var(v76), var(v77), var(v78), var(v79), var(v80)]\nlocals=[var(v75), var(v76), var(v77), var(v78), var(v79), var(v80)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock9 -> NodeBranch10; +NodeBranch6 [shape=diamond, label="Branch\nargs=[]"]; +edge [style=solid, label="target"]; NodeBranch6 -> NodeBasicBlock7; +NodeBasicBlock16 [shape=box, label="SpamBlock\noperations=(lt(var(v70), var(v68)) -> var(v73),)\ninput_args=[var(v67), var(v68), var(v69), var(v70), var(v71)]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock16 -> NodeConditionalBranch17; +NodeBasicBlock4 [shape=box, label="SpamBlock\noperations=(gt(var(v63), const(0)) -> var(v64),)\ninput_args=[var(v59), var(v60), var(v61), var(v62), var(v63)]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock4 -> NodeConditionalBranch5; +NodeBasicBlock11 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v81), var(v82), var(v83), var(v84), var(v85)]\nlocals=[var(v81), var(v82), var(v83), var(v84), var(v85)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock11 -> NodeEndBranch12; +NodeConditionalBranch17 [shape=diamond, label="ConditionalBranch\ncondition=var(v73)"]; +edge [style=dashed, label="elsebranch"]; NodeConditionalBranch17 -> NodeBranch18; +edge [style=dashed, label="ifbranch"]; NodeConditionalBranch17 -> NodeBranch25; +NodeBasicBlock0 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v15), var(v16)]\nlocals=[var(v15), var(v16)]"]; +edge [style=solid, label="branch"]; NodeBasicBlock0 -> NodeBranch1; +NodeBranch3 [shape=diamond, label="Branch\nargs=[var(v17), var(v18), const(''), const(None), const(5)]"]; +edge [style=solid, label="target"]; NodeBranch3 -> NodeBasicBlock4; +NodeBasicBlock26 [shape=box, label="EggBlock\noperations=(add(var(v70), const(1)) -> var(v87), add(var(v69), const('.')) -> var(v88))\nbooloutcome=True\ninput_args=[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; +edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock26 -> NodeBasicBlock16; +edge [style=solid, label="branch"]; NodeBasicBlock26 -> NodeBranch27; +NodeBranch15 [shape=diamond, label="Branch\nargs=[var(v59), var(v60), var(v61), var(v59), var(v66)]"]; +edge [style=solid, label="target"]; NodeBranch15 -> NodeBasicBlock16; +NodeBranch24 [shape=diamond, label="Branch\nargs=[var(v102), var(v103), var(v108), var(v105), var(v106)]"]; +edge [style=solid, label="target"]; NodeBranch24 -> NodeBasicBlock4; +NodeBasicBlock14 [shape=box, label="EggBlock\noperations=(sub(var(v63), const(1)) -> var(v66),)\nbooloutcome=True\ninput_args=[]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; +edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock14 -> NodeBasicBlock4; +edge [style=solid, label="branch"]; NodeBasicBlock14 -> NodeBranch15; +NodeBranch1 [shape=diamond, label="Branch\nargs=[var(v15), var(v16)]"]; +edge [style=solid, label="target"]; NodeBranch1 -> NodeBasicBlock2; +NodeBranch22 [shape=diamond, label="Branch\nargs=[var(v95), var(v96), var(v97), var(v98), var(v99)]"]; +edge [style=solid, label="target"]; NodeBranch22 -> NodeBasicBlock23; +NodeBranch10 [shape=diamond, label="Branch\nargs=[var(v75), var(v76), var(v77), var(v78), var(v79)]"]; +edge [style=solid, label="target"]; NodeBranch10 -> NodeBasicBlock11; +} \ No newline at end of file From tismer at codespeak.net Fri Oct 3 18:38:08 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 18:38:08 +0200 (MEST) Subject: [pypy-svn] rev 1549 - pypy/trunk/doc/funding/fundingattic Message-ID: <20031003163808.D00005C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 18:38:08 2003 New Revision: 1549 Removed: pypy/trunk/doc/funding/fundingattic/ Log: moving attic out of the generated path From tismer at codespeak.net Fri Oct 3 18:38:59 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 18:38:59 +0200 (MEST) Subject: [pypy-svn] rev 1550 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031003163859.5357C5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 18:38:58 2003 New Revision: 1550 Modified: pypy/trunk/doc/funding/B3.0_impact.txt pypy/trunk/doc/funding/B3.2.strategic_impact.txt pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt pypy/trunk/doc/funding/crossreferences.asc pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.sxw Log: moved attic out of the funding (conflict with text processing) Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 3 18:38:58 2003 @@ -45,8 +45,8 @@ have more users. The Python FAQ, available at the python language home site of -python.org says: -------------------------------------------------------- +python.org says:: + 2.1. How many people are using Python? Certainly thousands, and quite probably tens of thousands of users. @@ -57,7 +57,7 @@ http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py Jacek's counter has more than 43 000 registered users. -------------------------------------------------------- + Googling for 'python programming' gives 1,540,000 hits. ('Python' gives ten million, but many of those Pythons are the actual reptiles.) @@ -93,10 +93,10 @@ It's probably reasonably safe to say there are at least 175,000 active Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books _Learning Python_, -_Python in a Nutshell_ and _The Python Cookbook_ are to be considered -relevant. Speaking of books, sales statistics of _The Essential -Jython_, targetted at users of the Python version that compiles to +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are to be considered +relevant. Speaking of books, sales statistics of *The Essential +Jython* targetted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. Modified: pypy/trunk/doc/funding/B3.2.strategic_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.2.strategic_impact.txt (original) +++ pypy/trunk/doc/funding/B3.2.strategic_impact.txt Fri Oct 3 18:38:58 2003 @@ -32,21 +32,21 @@ have more users. The Python FAQ, available at the python language home site of -python.org says: -------------------------------------------------------- - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. -------------------------------------------------------- -Googling for 'python programming' gives 1,540,000 hits. ('Python' gives -ten million, but many of those Pythons are the actual reptiles.) +python.org says:: + + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. +('Python' gives ten million, but many of those Pythons are the actual reptiles.) Compared to the most common languages these days, C, C++, Java and Visual Basic, there is certainly much less 'market penetration', @@ -80,9 +80,9 @@ It's probably reasonably safe to say there are at least 175,000 active Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books _Learning Python_, -_Python in a Nutshell_ and _The Python Cookbook_ are any indication. -Speaking of books, sales statistics of _The Essential Jython_, +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are any indication. +Speaking of books, sales statistics of *The Essential Jython*, targetted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 18:38:58 2003 @@ -60,7 +60,7 @@ The goal is to make a complete Python interpreter that runs under any existing Python implementation. -WP21_: Development and Completion of the PyPy Interpreter +WPXXX21: Development and Completion of the PyPy Interpreter ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The PyPy interpreter itself should be developed and completed as a regular Python/RPython program. This package includes all @@ -70,7 +70,7 @@ and how to hook in the bytecode compiler. -WP22_: Porting CPython C-sourcecode to regular Python +WPXXX22: Porting CPython C-sourcecode to regular Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Port all parts of CPython which we don't want to implement in WP21_ into regular Python libraries. @@ -81,10 +81,10 @@ into the interpreter. -WP30_: The PyPy Compiler +WP30_: The PyPy Translation --------------------------- -WP31_: Translation of RPython +WPXXX31: Translation of RPython ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RPython is a restricted version of Python, which is much @@ -93,7 +93,7 @@ else, like C source, Pyrex code, or even passed to an assembly code generator. The Definition of RPython is slightly in flux and should - be adjusted during WP31_. + be adjusted during WPXXX31. The goal is to be able to translate arbitrary RPython source code (e.g. the one produced in WP21_ into low-level code (C, Pyrex, Java, others). @@ -105,18 +105,18 @@ ~~~~~~~~~~~~~~~~~~~ The goal is to put interpreter (WP21_, WP22_) and translator -(WP31_) together. +(WPXXX31) together. The interpreter is written as an RPython program. The translator has to translate this program into some low-level language. The resulting program then needs to be supported by a special -runtime library. The work-flow of WP32_ is repetitive, +runtime library. The work-flow of WPXXX32 is repetitive, since it will not be possible to "get it right" in the first attempt. Analysis and redesign will have to be repeated until the result is satisfactory. -WP32_: Specific Analysis and Redesign +WPXXX32: Specific Analysis and Redesign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The global translation of PyPy is going to raise particular @@ -131,7 +131,7 @@ until we reach overall convergence. -WP33_: Low Level PyPy Runtime +WPXXX33: Low Level PyPy Runtime ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In order to give a working environment to the translated RPython @@ -146,8 +146,8 @@ parts can be directly re-used from CPython. -WP40_: High-performance PyPy-Python ------------------------------------ +WPXXX40: High-performance PyPy-Python +------------------------------------------ The goal is to optimize Bootstrapping in possibly various ways, building on its flexibility to go beyond CPython. @@ -166,15 +166,15 @@ following CPython's code base. Both will be rewritten as a meta-component that hooks into the - translator plus a dedicated run-time component (WP33_). + translator plus a dedicated run-time component (WPXXX33). As a side effect, after successful completion of the PyPy project, they no longer need to exist as stand-alone projects. -WP41_: Integration of _`Stackless` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX41: Integration of _`Stackless` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Stackless Python has implemented high speed multitasking in a single thread for C Python in two different ways: @@ -185,8 +185,8 @@ between different machines. -WP42_: Several Object Implementations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WP42_: Core Optimisations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since the standard object space allows coexistence of different implementations of the same type, we can develop **several object implementations**. @@ -202,7 +202,10 @@ The following objects are mostly independent from any particular low-level run-time environment. +WP49_: Language Research and Extension +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +XXX write it. WP43_: Translator Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -256,7 +259,7 @@ the abstraction and ease-of-use of Python. -WP51_: Porting PyPy to an Embedded Device +WPXXX51: Porting PyPy to an Embedded Device ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dependant from the actual processor architecture, PyPy's @@ -265,8 +268,8 @@ as well as it makes sense to develop a PyPy simulator for the target platform. -WP52_: Evaluation whether to do a small OS in PyPy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX52: Evaluation whether to do a small OS in PyPy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Implementing a small operating system in PyPy raises some new questions and opens a new category of problems. @@ -275,12 +278,12 @@ In this short task, we will figure out whether it is feasible to carry on with the next task. -WP53_: A small Operating System for an Embedded Device -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX53: A small Operating System for an Embedded Device +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *we are thinking of a printer here, but don't have facts yet* - In extent to WP51_, it makes sense to write the whole + In extent to WPXXX51, it makes sense to write the whole operating system in PyPy. We need a low-level extension to the code generator that allows to access I/O ports. Interrupts need to be supported as well, and primitive @@ -288,7 +291,7 @@ Ideally, we can create a single threaded PyPy OS with a prioritized scheduler that runs the OS parts together with multiple Python application. The latter depends on - WP41_ very much. + WPXXX41 very much. Numerical Applications @@ -310,8 +313,8 @@ configuration during startup time. -WP54_: Code Generator for SIMD Architecture -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX54: Code Generator for SIMD Architecture +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In order to support numerical applications better, PyPy should be extended to support special hardware like SIMD (Single Instruction Multiple Data) processors. @@ -331,8 +334,8 @@ data type from the Python level, as well. The specification of that is part of this task. -WP55_: Enhanced Numerical Package -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX55: Enhanced Numerical Package +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rewrite a numerical Python package like NumPy using RPython. Identify the numerical operations @@ -342,12 +345,17 @@ dependent from the available capabilities of the current code generator. -WP56_: Load Balancing in a Multi-Processor environment -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +WPXXX56: Load Balancing in a Multi-Processor environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *XXX add some general words here from the wp* +WP59_: Integration and Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +XXX write it. + Infrastructure ------------------ Modified: pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp90_constraint_prog.txt Fri Oct 3 18:38:58 2003 @@ -12,7 +12,7 @@ .. |title| replace:: Constraint programming for the Semantic Web .. |wp| replace:: WP90 -.. |start| replace:: +.. |start| replace:: |e| .. |p1| replace:: X .. |m1| replace:: 0 .. |p2| replace:: Y Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 18:38:58 2003 @@ -1,25 +1,17 @@ .. _WP10: B6.7.wp10_management.html -.. _WP20: B6.7.wp20_interpreter.html +.. _WP20: B6.7.wp20_core.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html -.. _WP30: B6.7.wp30_compiler.html -.. _WP31: B6.7.wp31_translation_of_rpython.html -.. _WP32: B6.7.wp32_bootstrap_redesign.html -.. _WP33: B6.7.wp33_bootstrap_runtime.html -.. _WP40: B6.7.wp40_high_performance.html -.. _WP41: B6.7.wp41_integrate_stackless.html -.. _WP42: B6.7.wp42_several_obj_impl.html +.. _WP30: B6.7.wp30_translation.html +.. _WP42: B6.7.wp42_core_optimisations.html .. _WP43: B6.7.wp43_translator_optimisations.html -.. _WP44: B6.7.wp44_integrate_psyco.html +.. _WP44: B6.7.wp44_dynamic_optimization.html +.. _WP49: B6.7.wp49_language_research.html .. _WP50: B6.7.wp50_validations.html -.. _WP51: B6.7.wp51_embedded_device.html -.. _WP52: B6.7.wp52_small_os_pre.html -.. _WP53: B6.7.wp53_small_os.html -.. _WP54: B6.7.wp54_simd_architecture.html -.. _WP55: B6.7.wp55_numerical_package.html -.. _WP56: B6.7.wp56_load_balancing.html +.. _WP59: B6.7.wp59_integration_config.html .. _WP60: B6.7.wp60_documentation.html .. _WP70: B6.7.wp70_maintenance.html .. _WP80: B6.7.wp80_synchronisation.html +.. _WP90: B6.7.wp90_constraint_prog.html .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Fri Oct 3 18:38:58 2003 @@ -105,11 +105,13 @@ wp = line.split()[-1] pat = "[bB]6\.7.wp[0-9]0" - if re.match(pat, name): - head = HEAD3 - else: - head = HEAD4 - + #if re.match(pat, name): + # head = HEAD3 + #else: + # head = HEAD4 + # we have only one level now! + head = HEAD3 + # make a local target lines[:0] = head + [ ":DELETE:BEGIN", Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From arigo at codespeak.net Fri Oct 3 19:11:59 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 3 Oct 2003 19:11:59 +0200 (MEST) Subject: [pypy-svn] rev 1551 - in pypy/trunk/src/pypy: objspace/flow translator translator/test Message-ID: <20031003171159.350A35C3F5@thoth.codespeak.net> Author: arigo Date: Fri Oct 3 19:11:48 2003 New Revision: 1551 Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/flowmodel.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/test_annotation.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: * simplification of easy call() into simple_call() * more tests * bug fixes dicovered by tests Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Fri Oct 3 19:11:48 2003 @@ -61,6 +61,7 @@ return SpamBlock((newstate, unmergeablestate1)) class EggBlock(BasicBlock): + has_renaming = False def __init__(self, prevblock, booloutcome): BasicBlock.__init__(self, [], prevblock.locals, [], None) @@ -109,9 +110,10 @@ self.w_globals = w_globals = space.wrap(globals) frame = code.create_frame(space, w_globals) formalargcount = code.getformalargcount() + dummy = W_Constant(None) + dummy.dummy = True arg_list = ([W_Variable() for i in range(formalargcount)] + - [W_Constant(None)] * (len(frame.fastlocals_w) - - formalargcount)) + [dummy] * (len(frame.fastlocals_w) - formalargcount)) frame.setfastscope(arg_list) self.joinpoints = {} for joinpoint in code.getjoinpoints(): Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Fri Oct 3 19:11:48 2003 @@ -5,23 +5,35 @@ class GraphGlobalVariable(Variable): pass +def what_about(opname, args, annotations): + for ann in annotations: + if ann.opname == opname and list(ann.args) == args: + return ann.result + return None + def get_type(w,annotations): if isinstance(w,Constant): return type(w.value) - for ann in annotations: - if ann.opname == 'type' and list(ann.args) == [w] and isinstance(ann.result,Constant): - return ann.result.value + w_type = what_about('type', [w], annotations) + if isinstance(w_type ,Constant): + return w_type.value return None def set_type(var,type,annotations): ann = SpaceOperation("type",[var],Constant(type)) - annotations.append(ann) + annotations.append(ann) class Annotator: def __init__(self, flowgraph): self.flowgraph = flowgraph + def build_types(self, input_arg_types): + input_ann = [] + for arg, arg_type in zip(self.flowgraph.get_args(), input_arg_types): + set_type(arg, arg_type, input_ann) + return self.build_annotations(input_ann) + def build_annotations(self,input_annotations): self.annotated = {} self.endblock = BasicBlock([Variable('_return_value')], [], [], None) @@ -33,24 +45,40 @@ # XXX what if self.endblock not in self.annotated? return self.endblock.input_args[0], self.annotated[self.endblock] - def flownext(self,branch,curblock): - getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) - + def simplify_calls(self): + for block, ann in self.annotated.iteritems(): + newops = [] + for op in block.operations: + if op.opname == "call": + w_func, w_varargs, w_kwargs = op.args + w_len = what_about('len', [w_varargs], ann) + if isinstance(w_len, Constant): + args_w = [what_about('getitem', [w_varargs, Constant(i)], + ann) + for i in range(w_len.value)] + if None not in args_w: + args_w.insert(0, w_func) + op = SpaceOperation('simple_call', args_w, op.result) + # XXX check that w_kwargs is empty + newops.append(op) + block.operations = newops + + #__________________________________________________ + def flowin(self, block, annotations): if block not in self.annotated: - self.annotated[block] = annotations[:] + oldannotations = None + newannotations = annotations[:] else: oldannotations = self.annotated[block] #import sys; print >> sys.stderr, block, oldannotations, annotations, newannotations = self.unify(oldannotations,annotations) #import sys; print >> sys.stderr, newannotations - if newannotations == oldannotations: - return - self.annotated[block] = newannotations for op in block.operations: - self.consider_op(op,self.annotated[block]) - if block is not self.endblock: + self.consider_op(op,newannotations) + self.annotated[block] = newannotations + if newannotations != oldannotations and block is not self.endblock: self.flownext(block.branch,block) def consider_op(self,op,annotations): @@ -66,55 +94,76 @@ set_type(op.result,int,annotations) consider_op_sub = consider_op_add + consider_op_and_ = consider_op_add # don't forget the trailing '_' + # XXX add more + + # XXX give them Bool result type + consider_op_lt = consider_op_add + consider_op_le = consider_op_add + consider_op_eq = consider_op_add + consider_op_ne = consider_op_add + consider_op_gt = consider_op_add + consider_op_ge = consider_op_add + + def consider_op_newtuple(self,op,annotations): + set_type(op.result,tuple,annotations) + ann = SpaceOperation("len",[op.result],Constant(len(op.args))) + annotations.append(ann) + for i in range(len(op.args)): + ann = SpaceOperation("getitem",[op.result,Constant(i)],op.args[i]) + annotations.append(ann) def consider_const(self,to_var,const,annotations): + if getattr(const, 'dummy', False): + return # undefined local variables set_type(to_var,type(const.value),annotations) - def flownext_Branch(self,branch,curblock): - - renaming = {} - newannotations = [] - - for w_from,w_to in zip(branch.args,branch.target.input_args): - if isinstance(w_from,Variable): - renaming.setdefault(w_from, []).append(w_to) - else: - self.consider_const(w_to,w_from,newannotations) - - def rename(w): - if isinstance(w,Constant): - return [w] - if isinstance(w,GraphGlobalVariable): - return [w] - else: - return renaming.get(w, []) - - def renameall(list_w): - if list_w: - for w in rename(list_w[0]): - for tail_w in renameall(list_w[1:]): - yield [w] + tail_w - else: - yield [] - - for ann in self.annotated[curblock]: - # we translate a single SpaceOperation(...) into either - # 0 or 1 or multiple ones, by replacing each variable - # used in the original operation by (in turn) any of - # the variables it can be renamed into - for list_w in renameall([ann.result] + ann.args): - result = list_w[0] - args = list_w[1:] - newannotations.append(SpaceOperation(ann.opname,args,result)) + def flownext(self,branch,curblock): + getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) + def flownext_Branch(self,branch,curblock): + if branch.target.has_renaming: + renaming = {} + newannotations = [] + + for w_from,w_to in zip(branch.args,branch.target.input_args): + if isinstance(w_from,Variable): + renaming.setdefault(w_from, []).append(w_to) + else: + self.consider_const(w_to,w_from,newannotations) + + def rename(w): + if isinstance(w,Constant): + return [w] + if isinstance(w,GraphGlobalVariable): + return [w] + else: + return renaming.get(w, []) + + def renameall(list_w): + if list_w: + for w in rename(list_w[0]): + for tail_w in renameall(list_w[1:]): + yield [w] + tail_w + else: + yield [] + + for ann in self.annotated[curblock]: + # we translate a single SpaceOperation(...) into either + # 0 or 1 or multiple ones, by replacing each variable + # used in the original operation by (in turn) any of + # the variables it can be renamed into + for list_w in renameall([ann.result] + ann.args): + result = list_w[0] + args = list_w[1:] + newannotations.append(SpaceOperation(ann.opname,args,result)) + else: + newannotations = self.annotated[curblock] self.flowin(branch.target,newannotations) - + def flownext_ConditionalBranch(self,branch,curblock): - # XXX this hack depends on the fact that ConditionalBranches - # XXX point to two EggBlocks with *no* renaming necessary - curannotations = self.annotated[curblock] - self.flowin(branch.ifbranch.target,curannotations) - self.flowin(branch.elsebranch.target,curannotations) + self.flownext(branch.ifbranch,curblock) + self.flownext(branch.elsebranch,curblock) def flownext_EndBranch(self,branch,curblock): branch = Branch([branch.returnvalue], self.endblock) Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Fri Oct 3 19:11:48 2003 @@ -22,6 +22,8 @@ return _visited class BasicBlock(FlowNode): + has_renaming = True + def __init__(self, input_args, locals, operations, branch=None): self.input_args = input_args self.locals = locals Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Fri Oct 3 19:11:48 2003 @@ -22,11 +22,8 @@ def annotate(self, input_arg_types): a = Annotator(self.functiongraph) - input_ann = [] - for arg, arg_type in zip(self.functiongraph.get_args(), - input_arg_types): - set_type(arg, arg_type, input_ann) - self.annotations = a.build_annotations(input_ann) + self.annotations = a.build_types(input_arg_types) + a.simplify_calls() def emitcode(self): self.blockids = {} @@ -127,11 +124,16 @@ elif op.opname == 'call': self.putline("%s = %s(*%s, **%s)" % (resultname, argnames[0], argnames[1], argnames[2])) + elif op.opname == 'simple_call': + self.putline("%s = %s(%s)" % (resultname, argnames[0], + ", ".join(argnames[1:]))) else: # short-cuts [getattr,] if op.opname == 'getattr': attr = op.args[1] if isinstance(attr,Constant): + # XXX check that attr.value is a string and a + # XXX valid Python identifiers self.putline("%s = %s.%s" % (resultname,argnames[0], attr.value)) continue @@ -141,8 +143,8 @@ if arity == 1 or arity == 3 or "a" <= opsymbol[0] <= "z": self.putline("%s = %s(%s)" % (resultname, opsymbol, ", ".join(argnames))) - elif opsymbol[-1] == '=': - # in-place operator + elif 0: + # XXX in-place operators don't work, fixme self.putline("%s = %s; %s += %s" % ( resultname, argnames[0], resultname, argnames[1])) Modified: pypy/trunk/src/pypy/translator/test/test_annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_annotation.py (original) +++ pypy/trunk/src/pypy/translator/test/test_annotation.py Fri Oct 3 19:11:48 2003 @@ -7,6 +7,28 @@ from pypy.translator.flowmodel import * class TestCase(test.IntTestCase): + def setUp(self): + self.space = test.objspace('flow') + + def make_ann(self, func): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + name = func.func_name + funcgraph = self.space.build_flow(func) + funcgraph.source = inspect.getsource(func) + return Annotator(funcgraph) + + def reallyshow(self, graph): + import os + from pypy.translator.test.make_dot import make_dot + from pypy.tool.udir import udir + dest = make_dot(graph, udir, 'ps') + os.system('gv %s' % str(dest)) + def test_simple_func(self): """ one test source: @@ -109,6 +131,21 @@ end_var, end_ann = a.end_annotations() self.assertEquals(get_type(end_var, end_ann), int) + def test_simplify_calls(self): + a = self.make_ann(f_calls_g) + a.build_types([int]) + a.simplify_calls() + #self.reallyshow(a.flowgraph) + +def g(n): + return [0,1,2,n] + +def f_calls_g(n): + total = 0 + for i in g(n): + total += i + return total + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Fri Oct 3 19:11:48 2003 @@ -96,5 +96,22 @@ poor_man_range = self.make_cfunc(self.poor_man_range, [int]) self.assertEquals(poor_man_range(10), range(10)) + #____________________________________________________ + def time_waster(n): + "Arbitrary test function." + i = 0 + x = 1 + while i Author: nico Date: Fri Oct 3 19:16:58 2003 New Revision: 1552 Added: pypy/trunk/doc/funding/TODO Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/B1._obj_from_badB2.txt pypy/trunk/doc/funding/B2.0.0_new_relevance.txt pypy/trunk/doc/funding/B3.0_impact.txt pypy/trunk/doc/funding/B3.1_standards.txt pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade pypy/trunk/doc/funding/B3.2.strategic_impact.txt pypy/trunk/doc/funding/B4.0_resources.txt pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B4.2_other_countries.txt pypy/trunk/doc/funding/B5.0_management.txt pypy/trunk/doc/funding/B6.0_detailed_implementation.txt pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp10_management.txt pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt pypy/trunk/doc/funding/project_gantt.png pypy/trunk/doc/funding/project_planning.xml pypy/trunk/doc/funding/project_resources.xml Log: This is after the funding sprint. Committed by Laura and Nicolas. Read TODO for what's missing to complete the proposal. Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Fri Oct 3 19:16:58 2003 @@ -80,7 +80,7 @@ Coordinator fax -XXXFIXME finish up list of partners, see 20031002-meeting-notes.txt +FIXME_NICO FIXME_LAURA finish up list of partners, see 20031002-meeting-notes.txt .. put this before the TOC Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Fri Oct 3 19:16:58 2003 @@ -74,3 +74,4 @@ validate and disseminate the previous results by implementing several applications using the high-performance PyPy interpreter. +FIXME_NICO FIXME_LAURA check this Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Fri Oct 3 19:16:58 2003 @@ -20,7 +20,8 @@ :DELETE:END -XXXFIXME: restructure with following plan: +FIXME_ARMIN: shorten introduction to fit in 3 pages +then refactor to fit with following plan: B.1.1 Problem to be solved @@ -30,7 +31,6 @@ B.1.4 Beyond State of The Art -XXXFIXME: shorten introduction to fit in 3 pages Scientific and technological objectives of the project & state of the art Modified: pypy/trunk/doc/funding/B1._obj_from_badB2.txt ============================================================================== --- pypy/trunk/doc/funding/B1._obj_from_badB2.txt (original) +++ pypy/trunk/doc/funding/B1._obj_from_badB2.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,12 @@ +THIS FILE IS NOT USED. + +----------------------------------------------------------------------- +Laura: This is the stuff I wrote for B2. It belongs in B1, if at all. +I sort of like how I made the PyPy objective match the Call objective. +That might be good to clip for B1. +--------------------------------------------------------------- + + B.2 Relevance to the objectives of the IST Priority Describe the manner in which the proposed project's goals address the @@ -5,11 +14,7 @@ Priority in the areas concerned. (Recommended length ? three pages) -------------------------------------------- -This is the stuff I wrote for B2. It belongs in B1, if at all. -I sort of like how I made the PyPy objective match the Call objective. -That might be good to clip for B1. ---------------------------------------------------------------- + PyPy is a precise match for IST-2002-2.3.2.3 - Open development platforms for software and services. Its stated objective is as Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- pypy/trunk/doc/funding/B2.0.0_new_relevance.txt (original) +++ pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Fri Oct 3 19:16:58 2003 @@ -36,7 +36,7 @@ :DELETE:END -XXXFIXME: proof-read this +FIXME_LAURA: proof-read this Relevance to the Objectives of the IST Priority -------------------------------------------------- Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,8 @@ +FIXME_LAURA: currently writing this +FIXME_NICO FIXME_ALASTAIR : proof-read it + +FIXME think about including Logilab and DFKI references + :DELETE:BEGIN B.3 Potential impact @@ -198,7 +203,7 @@ But let me quote from an article posted to the Python-in-Education mailing list. -FIXME -- I promised Arthur I would fix any typos:: +FIXME_LAURA -- I promised Arthur I would fix any typos:: Date: Sun, 14 Sep 2003 11:52:05 -0400 From: Arthur Modified: pypy/trunk/doc/funding/B3.1_standards.txt ============================================================================== --- pypy/trunk/doc/funding/B3.1_standards.txt (original) +++ pypy/trunk/doc/funding/B3.1_standards.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,5 @@ +FIXME_LAURA: shrink it + :DELETE:BEGIN 3.1 Contributions to Standards Modified: pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research ============================================================================== --- pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research (original) +++ pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research Fri Oct 3 19:16:58 2003 @@ -1,3 +1,6 @@ +FIXME_LAURA: finish writing +FIXME_NICO FIXME_ALASTAIR: proof-read + :DELETE:BEGIN B.3 Potential impact Modified: pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade ============================================================================== --- pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade (original) +++ pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade Fri Oct 3 19:16:58 2003 @@ -1,3 +1,7 @@ +FIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + :DELETE:BEGIN B.3 Potential impact Modified: pypy/trunk/doc/funding/B3.2.strategic_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.2.strategic_impact.txt (original) +++ pypy/trunk/doc/funding/B3.2.strategic_impact.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,7 @@ +FIXME_LAURA : finish writing + +FIXME_NICO FIXME_ALASTAIR proof-read + :DELETE:BEGIN B.3 Potential impact Modified: pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.txt (original) +++ pypy/trunk/doc/funding/B4.0_resources.txt Fri Oct 3 19:16:58 2003 @@ -21,7 +21,7 @@ The consortium and project resources ===================================== -XXXFIXME check below information +FIXME_NICO FIXME_LAURA check below information **DFKI** Modified: pypy/trunk/doc/funding/B4.1_subcontracting.txt ============================================================================== --- pypy/trunk/doc/funding/B4.1_subcontracting.txt (original) +++ pypy/trunk/doc/funding/B4.1_subcontracting.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,5 @@ +FIXME_LAURA + :DELETE:BEGIN B.4.1 Sub-contracting: Modified: pypy/trunk/doc/funding/B4.2_other_countries.txt ============================================================================== --- pypy/trunk/doc/funding/B4.2_other_countries.txt (original) +++ pypy/trunk/doc/funding/B4.2_other_countries.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,5 @@ +FIXME_LAURA + :DELETE:BEGIN B.4.2 Other countries : Modified: pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_management.txt (original) +++ pypy/trunk/doc/funding/B5.0_management.txt Fri Oct 3 19:16:58 2003 @@ -16,7 +16,7 @@ add text! -XXXFIXME +FIXME_LAURA FIXME_JACOB here we need to say Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Fri Oct 3 19:16:58 2003 @@ -53,7 +53,7 @@ In this section, we describe in detail the work planned to achieve the objectives for the full duration of the proposed project. -XXXFIXME: see B0.1 for phases +FIXME_CHRISTIAN: see B0.1 for phases Phase 1 is technical development of State of The Art interpreter Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,5 @@ +FIXME_CHRISTIAN: finish this + .. include:: crossreferences.asc Workplan Introduction Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:16:58 2003 @@ -1,3 +1,5 @@ +FIXME_LAURA FIXME_NICO: finish this + .. include:: crossreferences.asc Workpackage List @@ -15,27 +17,35 @@ ===== ===================================================== ===== ==== ==== ==== ==== |wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| ===== ===================================================== ===== ==== ==== ==== ==== -WP10_ Coordination and Management 24 0 24 +WP10_ 1. Coordination and Management 24 0 24 DFKI +----- ----------------------------------------------------- ----- ---- ---- ---- ---- +WP70_ 2. Project Infrastructure and Tools 24 0 24 PBF et Holger +----- ----------------------------------------------------- ----- ---- ---- ---- ---- +WP80_ 3. Synchronisation with Standard Python 6 0 24 PBF (mwh) ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP20_ The PyPy Core 36 0 9 +WP20_ 4. The PyPy Core 36 0 9 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP30_ The PyPy Translation 33 0 9 +WP30_ 5. The PyPy Translation 33 0 9 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP44_ Dynamic Optimisations 36 9 18 +WP42_ 6. Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP43_ Translator Optimisations 27 9 18 +WP43_ 7. Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP42_ Core Optimisations 24 9 24 +WP44_ 8. Dynamic Optimisations 36 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP49_ Language Research and Extension NC? 9 24 +WP49_ 9. Language Extension NC? 9 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP50_ Validation of PyPy 27 18 24 +WP49_ 9. Application of language extensions NC? 9 24 DFKI ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP59_ Integration and Configuration 27 18 24 +WP50_ 10 Validation of flexibility 27 18 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP80_ Synchronisation with Standard Python 6 0 24 +WP59_ 11 Integration and Configuration 27 18 24 Strakt(?) Samuele ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP60_ Project Documentation and Dissemination 24 0 24 +WP49_ 12 Assess improvements of existing applications NC? 20 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -WP70_ Project Infrastructure and Tools 24 0 24 +WP60_ 13 Project Documentation and Dissemination 24 0 24 Strakt Martellibot ===== ===================================================== ===== ==== ==== ==== ==== + + +Note: constraint and aspects and type checking go into Langage Extension + semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file Modified: pypy/trunk/doc/funding/B6.7.wp10_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_management.txt Fri Oct 3 19:16:58 2003 @@ -1,10 +1,10 @@ .. include:: crossreferences.asc -.. |title| replace:: Coordination and Management +.. |title| replace:: Project Coordination and Management .. |wp| replace:: WP10 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 18 +.. |start| replace:: 1 +.. |p1| replace:: X* +.. |m1| replace:: 24 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| @@ -30,8 +30,8 @@ **Description of work** - collection and monitoring of monthly status reports, -- reporting to the EU -- organising meetings +- reporting to the EU project office +- organising meetings and sprints - maintaining an internal web site. The website will make heavy use of collaborative tools like Wiki pages, a content management system, and issue trackers. Modified: pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt Fri Oct 3 19:16:58 2003 @@ -24,6 +24,9 @@ XXX write me +Develop tools that will allow to chose from available features +to build a custom interpreter integrating selected capabilities. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Added: pypy/trunk/doc/funding/TODO ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/TODO Fri Oct 3 19:16:58 2003 @@ -0,0 +1,11 @@ +Things left to do for proposal completion +----------------------------------------- + +* deal with files tagged with FIXME_YOUR_NAME + +* Laura has to deal with ASK_STOCKHOLM tags + +* Christian has to add missing FIXME_YOUR_NAME tags in B6.7* and + reaorganize all the B6.7 files (create missing and rename existing) + +* Laura has to create B7 Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Fri Oct 3 19:16:58 2003 @@ -1,146 +1,90 @@ - - - - + + 720 2004/01/01 - - -720 + + +270 2004/01/01 - - -720 + + +270 2004/01/01 + + +450 +2004/10/01 - - - - - - -120 -2004/01/01 - - - - - - - -60 -wp21a - - + + +270 +2004/10/01 + + +270 +2004/10/01 - - - - - -120 + + +720 2004/01/01 - - - - - - -240 -wp22a - - - - - - - - -120 + + +720 2004/01/01 - - - - - - -120 -wp21a -wp22a -wp31 - - - - -90 + + +720 2004/01/01 - - - - - - -1 -wp2 -wp3 - - - - - -120 -synthese1 - - + + +720 +2004/01/01 - - -120 -synthese1 - - + + +720 +2004/01/01 - - -120 -synthese1 - - + + +720 +2004/01/01 - - -120 + - + +--> Modified: pypy/trunk/doc/funding/project_resources.xml ============================================================================== --- pypy/trunk/doc/funding/project_resources.xml (original) +++ pypy/trunk/doc/funding/project_resources.xml Fri Oct 3 19:16:58 2003 @@ -1,6 +1,8 @@ From tismer at codespeak.net Fri Oct 3 19:26:52 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 19:26:52 +0200 (MEST) Subject: [pypy-svn] rev 1553 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031003172652.01C165C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 19:26:51 2003 New Revision: 1553 Added: pypy/trunk/doc/funding/B6.7.wp01_management.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp10_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp20_core.txt Removed: pypy/trunk/doc/funding/B6.7.wp10_management.txt pypy/trunk/doc/funding/B6.7.wp20_core.txt pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp30_translation.txt pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt pypy/trunk/doc/funding/crossreferences.asc pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: renaming work packages (partially) Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Fri Oct 3 19:26:51 2003 @@ -38,8 +38,6 @@ Part B. -:DELETE:END - *** Front page -- PAGE 1 *** PYPY @@ -56,6 +54,8 @@ A Specific Targeted Research Project for: IST-2002-2.3.2.3 - Open development platforms for software and services +:DELETE:END + List of participants ================ ===================== ======================= Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:26:51 2003 @@ -46,7 +46,7 @@ - Synchronisation with Standard Python -WP10_: Coordination and Management +WP01_: Coordination and Management ------------------------------------- WP1 continues throughout the duration of the project and is carried out by the project coordinator. It involves the collection and monitoring of @@ -56,7 +56,7 @@ and issue trackers. -WP20_: The PyPy Interpreter +WP04_: The PyPy Interpreter --------------------------- The goal is to make a complete Python interpreter that runs under any @@ -148,7 +148,7 @@ parts can be directly re-used from CPython. -WPXXX40: High-performance PyPy-Python +High-performance PyPy-Python ------------------------------------------ The goal is to optimize Bootstrapping in possibly various ways, @@ -375,7 +375,7 @@ communities, like the Python Business Forum (PBF) and the Python developers list (python-dev at python.org). -WP70_: Maintenance of Tools +WP02_: Maintenance of Tools ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PyPy's own development needs an infrastructure that must continuously @@ -385,7 +385,7 @@ documentation extraction, and change notification via mailing lists. -WP80_: Synchronisation with Standard Python +WP03_: Synchronisation with Standard Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since Python is being further developed all the time, there is Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:26:51 2003 @@ -14,38 +14,37 @@ Note: The man months have not been inserted, yet. -===== ===================================================== ===== ==== ==== ==== ==== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| -===== ===================================================== ===== ==== ==== ==== ==== -WP10_ 1. Coordination and Management 24 0 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP70_ 2. Project Infrastructure and Tools 24 0 24 PBF et Holger ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP80_ 3. Synchronisation with Standard Python 6 0 24 PBF (mwh) ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP20_ 4. The PyPy Core 36 0 9 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP30_ 5. The PyPy Translation 33 0 9 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP42_ 6. Core Optimisations 24 9 24 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP43_ 7. Translator Optimisations 27 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP44_ 8. Dynamic Optimisations 36 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP49_ 9. Language Extension NC? 9 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP49_ 9. Application of language extensions NC? 9 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP50_ 10 Validation of flexibility 27 18 24 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP59_ 11 Integration and Configuration 27 18 24 Strakt(?) Samuele ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP49_ 12 Assess improvements of existing applications NC? 20 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -WP60_ 13 Project Documentation and Dissemination 24 0 24 Strakt Martellibot -===== ===================================================== ===== ==== ==== ==== ==== - +===== ===================================================== ===== ==== ==== ==== ==== ======== +|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp +===== ===================================================== ===== ==== ==== ==== ==== ======== +WP01_ Coordination and Management 24 0 24 DFKI +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP04_ The PyPy Core 36 0 9 Univ SH +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP30_ The PyPy Translation 33 0 9 PBF +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP42_ Core Optimisations 24 9 24 Univ SH +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP43_ Translator Optimisations 27 9 18 PBF +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP44_ Dynamic Optimisations 36 9 18 PBF +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP49_ Language Extension NC? 9 24 Logilab +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP69_ Application of language extensions NC? 9 24 DFKI +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP50_ Validation of flexibility 27 18 24 PBF +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP59_ Integration and Configuration 27 18 24 Strakt(?) Samuele +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP79_ Assess improvements of existing applications NC? 20 24 Logilab +----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- +WP60_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot +===== ===================================================== ===== ==== ==== ==== ==== ======== Note: constraint and aspects and type checking go into Langage Extension semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file Deleted: /pypy/trunk/doc/funding/B6.7.wp10_management.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp10_management.txt Fri Oct 3 19:26:51 2003 +++ (empty file) @@ -1,54 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Project Coordination and Management -.. |wp| replace:: WP10 -.. |start| replace:: 1 -.. |p1| replace:: X* -.. |m1| replace:: 24 -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Coordination and Management of the PyPy Project. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- collection and monitoring of monthly status reports, -- reporting to the EU project office -- organising meetings and sprints -- maintaining an internal web site. The website will make heavy - use of collaborative tools like Wiki pages, a content management system, - and issue trackers. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- Collection and monitoring of reports -- Report to EU -- Organise meetings -- Create and maintain internal web site - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp20_core.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp20_core.txt Fri Oct 3 19:26:51 2003 +++ (empty file) @@ -1,69 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: The PyPy Core -.. |wp| replace:: WP20 -.. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building a complete Python interpreter written in Python, -using a subset of Python that avoids dynamic features -which would impair the objectives of WP30_ (RPython). - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Design and implement the PyPy bytecode interpreter and -build an object space library in RPython. -The resulting interpreter must cover the complete Python -language specification. - -**Task 2** - -Port the built-in Python library to PyPy -(functions, types and modules currently implemented in C). -Decide on a case-by-case basis which features are to -be implemented using RPython or just general Python. - -**Task 3** - -Implement a Python parser and bytecode compiler in -Python. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL01: First partial Python Implementation running on top of CPython. -- DL02: Complete Python implementation running on top of CPython. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M1 A partial Python implementation that passses 75% of the official - Python test suite that don't depend on extension modules. - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp30_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp30_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp30_translation.txt Fri Oct 3 19:26:51 2003 @@ -22,7 +22,7 @@ **Objectives** -Analysis and translation of the PyPy core (WP20_) into +Analysis and translation of the PyPy core (WP04_) into efficient low-level code (C, Pyrex, Java, others). Providing a Runtime Library for the translated versions of PyPy. @@ -36,7 +36,7 @@ Create a code analysis tool for a subset of the Python language (RPython). Coordinate the definition of RPython -with WP20_, being the implementation language of the core. +with WP04_, being the implementation language of the core. **Task 2** Modified: pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt Fri Oct 3 19:26:51 2003 @@ -23,7 +23,7 @@ **Objectives** Building upon the efficiency and flexibility of the code base -developed in WP20_, investigate and compare alternative designs and +developed in WP04_, investigate and compare alternative designs and implementations. .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp70_maintenance.txt Fri Oct 3 19:26:51 2003 +++ (empty file) @@ -1,58 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Maintenance of Tools -.. |wp| replace:: WP70 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Supporting the PyPy project by maintaining and enhancing the tools. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Keep the infrastructure up-to-date and develop it further. - - - maintain the Subversion package and track its ongoing development - - - maintain the Subversion repository - - - build extensions for automatic document extraction - - - support email notification via mailing lists - -- Provide a mirror repository which is kept up-to-date and which - can be used in case of failure of the main repository. - -- Take care of regular repository backups. Design a strict backup - policy suitable for the project, and adhere to it. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp80_synchronisation.txt Fri Oct 3 19:26:51 2003 +++ (empty file) @@ -1,66 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Synchronisation with Standard Python -.. |wp| replace:: WP80 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 6 -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Keeping PyPy in sync with potential changes to Standard Python. -Support a subset of the CPython API for compatibility with -extension modules. -Facilitate porting of extension modules to PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Monitor the development of Standard Python for its ongoing changes. -Check the relevance of the changes concerning the structure of -PyPy. -Embed the relevant changes with proper testing, notifying the other -concurrent tasks of these changes. -Investigate tools which could partially automate -integration of simple changes. - -**Task 2** - -Investigate different solutions to address compatibility with -existing C extensions. -Support a subset of the CPython API. Facilitate porting of -more involved extensions. -Adjust existing interface generators to target PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- A version of PyPy that supports a subset of the CPython API. -- A guide describing the porting of C extensions to PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 19:26:51 2003 @@ -1,5 +1,7 @@ -.. _WP10: B6.7.wp10_management.html -.. _WP20: B6.7.wp20_core.html +.. _WP01: B6.7.wp01_management.html +.. _WP02: B6.7.wp02_maintenance.html +.. _WP03: B6.7.wp03_synchronisation.html +.. _WP04: B6.7.wp04_core.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html .. _WP30: B6.7.wp30_translation.html @@ -10,8 +12,6 @@ .. _WP50: B6.7.wp50_validations.html .. _WP59: B6.7.wp59_integration_config.html .. _WP60: B6.7.wp60_documentation.html -.. _WP70: B6.7.wp70_maintenance.html -.. _WP80: B6.7.wp80_synchronisation.html .. _WP90: B6.7.wp90_constraint_prog.html .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Fri Oct 3 19:28:14 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 19:28:14 +0200 (MEST) Subject: [pypy-svn] rev 1554 - pypy/trunk/doc/funding Message-ID: <20031003172814.D083A5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 19:28:13 2003 New Revision: 1554 Added: pypy/trunk/doc/funding/B6.7.wp05_translation.txt (props changed) - copied unchanged from rev 1553, pypy/trunk/doc/funding/B6.7.wp30_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (props changed) - copied unchanged from rev 1553, pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt Removed: pypy/trunk/doc/funding/B6.7.wp30_translation.txt pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt pypy/trunk/doc/funding/crossreferences.asc Log: renamig... Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:28:13 2003 @@ -83,7 +83,7 @@ into the interpreter. -WP30_: The PyPy Translation +WP05_: The PyPy Translation --------------------------- WPXXX31: Translation of RPython @@ -187,7 +187,7 @@ between different machines. -WP42_: Core Optimisations +WP06_: Core Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since the standard object space allows coexistence of different implementations of the same type, we can develop Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:28:13 2003 @@ -25,9 +25,9 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP04_ The PyPy Core 36 0 9 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP30_ The PyPy Translation 33 0 9 PBF +WP05_ The PyPy Translation 33 0 9 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP42_ Core Optimisations 24 9 24 Univ SH +WP06_ Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP43_ Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Fri Oct 3 19:28:13 2003 @@ -24,7 +24,7 @@ Building a complete Python interpreter written in Python, using a subset of Python that avoids dynamic features -which would impair the objectives of WP30_ (RPython). +which would impair the objectives of WP05_ (RPython). .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp30_translation.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp30_translation.txt Fri Oct 3 19:28:13 2003 +++ (empty file) @@ -1,71 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: The PyPy Translation -.. |wp| replace:: WP30 -.. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Analysis and translation of the PyPy core (WP04_) into -efficient low-level code (C, Pyrex, Java, others). -Providing a Runtime Library for the translated versions -of PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Create a code analysis tool for a subset of the Python -language (RPython). Coordinate the definition of RPython -with WP04_, being the implementation language of the core. - -**Task 2** - -Produce a tool chain, capable of extracting the RPython -byte code from the core, translating it into low-level -code (C, ...), and compiling it. -Use the data gathered in Task 1 to drive the translation -process. - -**Task 3** - -In order to give a working environment to the translated RPython -program, build the low-level-specific runtime components of PyPy. -For the C PyPy runtime, important parts can be directly re-used from CPython. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- Tool chain for translating and compiling arbitrary RPython programs. -- A compiled, self-contained version of PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- Complete implementation of Python, conforming to the language - definition and passing 90% of the official Python test suite. - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp42_core_optimisations.txt Fri Oct 3 19:28:13 2003 +++ (empty file) @@ -1,68 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Core Optimisations -.. |wp| replace:: WP42 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building upon the efficiency and flexibility of the code base -developed in WP04_, investigate and compare alternative designs and -implementations. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Provide alternative implementations of the core objects, -such as dictionaries, strings and integers, with different -trade-offs (speed, size, limitations). - -**Task 2** - -Run performance tests on the above, comparing the different -implementation decisions for a range of platforms and -applications. -Categorize into overall improvement, platform, and application dependency. -Produce and publish reports on the results. - -**Task 3** - -Merge the results back into the optimization effort. -Where necessary, define heuristics to select implementations -and to switch between them, depending on evolving runtime conditions. -Report on the results and submit as publications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Publication of statistics. -- DL??? Publication of novel heuristic techniques. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Fri Oct 3 19:28:13 2003 @@ -46,7 +46,7 @@ **Task 3** Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP42_. +Coordinate with WP06_. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 19:28:13 2003 @@ -2,10 +2,10 @@ .. _WP02: B6.7.wp02_maintenance.html .. _WP03: B6.7.wp03_synchronisation.html .. _WP04: B6.7.wp04_core.html +.. _WP05: B6.7.wp05_translation.html +.. _WP06: B6.7.wp06_core_optimisations.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html -.. _WP30: B6.7.wp30_translation.html -.. _WP42: B6.7.wp42_core_optimisations.html .. _WP43: B6.7.wp43_translator_optimisations.html .. _WP44: B6.7.wp44_dynamic_optimization.html .. _WP49: B6.7.wp49_language_research.html From tismer at codespeak.net Fri Oct 3 19:29:00 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 19:29:00 +0200 (MEST) Subject: [pypy-svn] rev 1555 - pypy/trunk/doc/funding Message-ID: <20031003172900.C0F4C5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 19:28:59 2003 New Revision: 1555 Added: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (contents, props changed) - copied, changed from rev 1552, pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt Removed: pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt pypy/trunk/doc/funding/crossreferences.asc Log: renaming... Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:28:59 2003 @@ -209,7 +209,7 @@ XXX write it. -WP43_: Translator Optimisations +WP07_: Translator Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It should be identified, which **optimisations** would benefit from support from the translator. These are the optimisations @@ -219,7 +219,7 @@ to use reference counting together with garbage collection, or whether to go for garbage collection, only. - The meta-programming underlying WP43_ + The meta-programming underlying WP07_ -- namely the work on the translator instead of on the resulting code -- is what gives us the possibility of actually implementing several very different schemes. The outcome of this effort is of course not unique, Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:28:59 2003 @@ -29,7 +29,7 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP06_ Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP43_ Translator Optimisations 27 9 18 PBF +WP07_ Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP44_ Dynamic Optimisations 36 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- Copied: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (from rev 1552, pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Fri Oct 3 19:28:59 2003 @@ -65,7 +65,7 @@ **Milestones and Expected Result** -- M3 High performance PyPy, together with WP43_. Outperform the +- M3 High performance PyPy, together with WP07_. Outperform the state-of-the art (Psyco, Stackless). .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp43_translator_optimisations.txt Fri Oct 3 19:28:59 2003 +++ (empty file) @@ -1,71 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Translator Optimisations -.. |wp| replace:: WP43 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 6 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Identification and Implementation of Optimisations -through modifications of the Translator. -Enable Massive Parallelism in a Single Thread. -Provide support for real-time parallelism. -Allow Pickling of a Running Program. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Enhance the translator to support continuation passing -style by integrating technology from the Stackless project. -Implement the necessary runtime system to support -massive parallelism. -Implement a single-threaded, pre-emptive scheduler with -priorities, complementing the OS threads. - -**Task 2** - -Study approaches concerning code size vs. speed trade-offs. -Implement and compare different object layout and memory management strategy -or strategies. -Enhance multimethod dispatching. -Implement schemes of pointer tagging. -Create reports and merge the results back into the optimization effort. -As of general interest, submit the reports as publication. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- a version of PyPy that supports Real-time massive parallelism -- report on optimisation results submitted as publications - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M3 High performance PyPy, together with WP43_. Outperform the - state-of-the art (Psyco, Stackless). - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Fri Oct 3 19:28:59 2003 @@ -61,7 +61,7 @@ **Milestones and Expected Result** -- M3 High performance PyPy, together with WP43_. Outperform the +- M3 High performance PyPy, together with WP07_. Outperform the state-of-the art (Psyco, Stackless). .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 19:28:59 2003 @@ -4,9 +4,9 @@ .. _WP04: B6.7.wp04_core.html .. _WP05: B6.7.wp05_translation.html .. _WP06: B6.7.wp06_core_optimisations.html +.. _WP07: B6.7.wp07_translator_optimisations.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html -.. _WP43: B6.7.wp43_translator_optimisations.html .. _WP44: B6.7.wp44_dynamic_optimization.html .. _WP49: B6.7.wp49_language_research.html .. _WP50: B6.7.wp50_validations.html From tismer at codespeak.net Fri Oct 3 19:31:08 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 19:31:08 +0200 (MEST) Subject: [pypy-svn] rev 1556 - pypy/trunk/doc/funding Message-ID: <20031003173108.B631F5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 19:31:06 2003 New Revision: 1556 Added: pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt (props changed) - copied unchanged from rev 1554, pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Removed: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt pypy/trunk/doc/funding/crossreferences.asc Log: renaming... Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:31:06 2003 @@ -187,7 +187,7 @@ between different machines. -WP06_: Core Optimisations +WP08_: Core Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since the standard object space allows coexistence of different implementations of the same type, we can develop Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:31:06 2003 @@ -27,11 +27,11 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP05_ The PyPy Translation 33 0 9 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Core Optimisations 24 9 24 Univ SH +WP44_ Dynamic Optimisations 36 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP07_ Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP44_ Dynamic Optimisations 36 9 18 PBF +WP08_ Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP49_ Language Extension NC? 9 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- Deleted: /pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Fri Oct 3 19:31:06 2003 +++ (empty file) @@ -1,68 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Core Optimisations -.. |wp| replace:: WP42 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building upon the efficiency and flexibility of the code base -developed in WP04_, investigate and compare alternative designs and -implementations. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Provide alternative implementations of the core objects, -such as dictionaries, strings and integers, with different -trade-offs (speed, size, limitations). - -**Task 2** - -Run performance tests on the above, comparing the different -implementation decisions for a range of platforms and -applications. -Categorize into overall improvement, platform, and application dependency. -Produce and publish reports on the results. - -**Task 3** - -Merge the results back into the optimization effort. -Where necessary, define heuristics to select implementations -and to switch between them, depending on evolving runtime conditions. -Report on the results and submit as publications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Publication of statistics. -- DL??? Publication of novel heuristic techniques. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Fri Oct 3 19:31:06 2003 @@ -46,7 +46,7 @@ **Task 3** Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP06_. +Coordinate with WP08_. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 19:31:06 2003 @@ -3,8 +3,8 @@ .. _WP03: B6.7.wp03_synchronisation.html .. _WP04: B6.7.wp04_core.html .. _WP05: B6.7.wp05_translation.html -.. _WP06: B6.7.wp06_core_optimisations.html .. _WP07: B6.7.wp07_translator_optimisations.html +.. _WP08: B6.7.wp08_core_optimisations.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html .. _WP44: B6.7.wp44_dynamic_optimization.html From tismer at codespeak.net Fri Oct 3 19:34:16 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Fri, 3 Oct 2003 19:34:16 +0200 (MEST) Subject: [pypy-svn] rev 1557 - pypy/trunk/doc/funding Message-ID: <20031003173416.5563C5C3F5@thoth.codespeak.net> Author: tismer Date: Fri Oct 3 19:34:11 2003 New Revision: 1557 Added: pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt (props changed) - copied unchanged from rev 1556, pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp09_language_research.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp49_language_research.txt pypy/trunk/doc/funding/B6.7.wp11_validations.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp50_validations.txt pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (props changed) - copied unchanged from rev 1552, pypy/trunk/doc/funding/B6.7.wp60_documentation.txt Removed: pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp49_language_research.txt pypy/trunk/doc/funding/B6.7.wp50_validations.txt pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt pypy/trunk/doc/funding/B6.7.wp60_documentation.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/crossreferences.asc Log: renaming finished so far. Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Fri Oct 3 19:34:11 2003 @@ -204,7 +204,7 @@ The following objects are mostly independent from any particular low-level run-time environment. -WP49_: Language Research and Extension +WP09_: Language Research and Extension ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XXX write it. @@ -231,7 +231,7 @@ - optimisation towards minimal code size for embedded systems. -WP44_: Integration of _`Psyco` +WP06_: Integration of _`Psyco` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Psyco provides techniques to increase the performance of C @@ -243,7 +243,7 @@ allowing new processor architectures to be targeted. -WP50_: Validation of PyPy +WP11_: Validation of PyPy --------------------------- The goal is to provide a validation of the advancements of @@ -353,7 +353,7 @@ *XXX add some general words here from the wp* -WP59_: Integration and Configuration +WP12_: Integration and Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XXX write it. @@ -362,7 +362,7 @@ ------------------ -WP60_: Project Documentation and Dissemination +WP14_: Project Documentation and Dissemination ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ During the whole project, a set of documents will be maintained Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Fri Oct 3 19:34:11 2003 @@ -23,27 +23,27 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 36 0 9 Univ SH +WP04_ The PyPy Core 36 0 9 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 PBF +WP05_ The PyPy Translation 33 0 9 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP44_ Dynamic Optimisations 36 9 18 PBF +WP06_ Dynamic Optimisations 36 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP07_ Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP08_ Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP49_ Language Extension NC? 9 24 Logilab +WP09_ Language Extension NC? 9 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP69_ Application of language extensions NC? 9 24 DFKI +WP10_ Application of language extensions NC? 9 24 DFKI ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP50_ Validation of flexibility 27 18 24 PBF +WP11_ Validation of flexibility 27 18 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP59_ Integration and Configuration 27 18 24 Strakt(?) Samuele +WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP79_ Assess improvements of existing applications NC? 20 24 Logilab +WP13_ Assess improvements of existing applications NC? 20 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP60_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot +WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot ===== ===================================================== ===== ==== ==== ==== ==== ======== Note: constraint and aspects and type checking go into Langage Extension Deleted: /pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp44_dynamic_optimization.txt Fri Oct 3 19:34:11 2003 +++ (empty file) @@ -1,67 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Dynamic optimizations and features -.. |wp| replace:: WP44 -.. |start| replace:: M2 -.. |p1| replace:: AR -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Y -.. |m3| replace:: 2 -.. |p4| replace:: Z -.. |m4| replace:: 2 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Enhance PyPy to dynamically adapt to its run-time environment and -to the characteristics of the running program. Dramatically -increase speed by enabling Just-In-Time compilation and -specialization. Address multiple processor architectures. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Apply and enhance techniques from the Psyco project. Promote parts -of the static translator to be used for run-time specialization. - -**Task 2** - -Design and implement a back-end component for dynamically emitting -machine code for multiple processor architectures. Enable dynamic -foreign function calls. - -**Task 3** - -Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP08_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. -- DL??? A Just-In-Time compiler for PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M3 High performance PyPy, together with WP07_. Outperform the - state-of-the art (Psyco, Stackless). - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp49_language_research.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp49_language_research.txt Fri Oct 3 19:34:11 2003 +++ (empty file) @@ -1,48 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Language Research and Extension -.. |wp| replace:: WP49 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -XXX write me - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp50_validations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp50_validations.txt Fri Oct 3 19:34:11 2003 +++ (empty file) @@ -1,72 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Validation of PyPy -.. |wp| replace:: WP50 -.. |start| replace:: M4/M3 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Research and validate the flexibility of PyPy by building key middleware -features into the language itself. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Analyze and implement security models at the language level. Implement -the "RExec" restricted execution model. (It was removed from the official -Python implementation because it was too hard to maintain.) - -**Task 2** - -Analyze and implement distributed execution models at the language level. -Implement network-transparent execution of Python programs. (Typical -libraries require programs to be aware of the remote execution model.) - -**Task 3** - -Analyze and implement persistence at the language level. Implement an -orthogonally persistent object space for Python programs. (Persistence -is never fully orthogonal without advanced language support.) - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- D?? A PyPy version which supports secure restricted execution of - arbitrary Python programs - -- D?? A PyPy version which supports distributed execution of - arbitrary Python programs - -- D?? A PyPy version which supports persistent execution of - arbitrary Python programs - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M4 Validation of the flexibility of PyPy with respect to key middleware requirements - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp59_integration_config.txt Fri Oct 3 19:34:11 2003 +++ (empty file) @@ -1,51 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Integration and Configuration -.. |wp| replace:: WP59 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -XXX write me - -Develop tools that will allow to chose from available features -to build a custom interpreter integrating selected capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -XXX write me - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp60_documentation.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp60_documentation.txt Fri Oct 3 19:34:11 2003 +++ (empty file) @@ -1,56 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Project Documentation and Dissemination -.. |wp| replace:: WP60 -.. |start| replace:: 0 -.. |p1| replace:: AM -.. |m1| replace:: 19 -.. |p2| replace:: JH -.. |m2| replace:: 3 -.. |p3| replace:: MWH -.. |m3| replace:: 3 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Providing ongoing documentation throughout the whole project. - -Keeping external groups informed of the ongoings in PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- During the whole project, maintain and extend a set of documents - represends the current status of the project, results of - discussions, the planning of new sprints and their status reports, - as well as the preparation of papers for presentation on - various congresses. - -- Send reports of ongoings in the project to the Python Business - Forum (PBF) and the Python - developers list (python-dev at python.org). - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- Good documentation and dissemination - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Fri Oct 3 19:34:11 2003 @@ -3,15 +3,15 @@ .. _WP03: B6.7.wp03_synchronisation.html .. _WP04: B6.7.wp04_core.html .. _WP05: B6.7.wp05_translation.html +.. _WP06: B6.7.wp06_dynamic_optimization.html .. _WP07: B6.7.wp07_translator_optimisations.html .. _WP08: B6.7.wp08_core_optimisations.html +.. _WP09: B6.7.wp09_language_research.html +.. _WP11: B6.7.wp11_validations.html +.. _WP12: B6.7.wp12_integration_config.html +.. _WP14: B6.7.wp14_documentation.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html -.. _WP44: B6.7.wp44_dynamic_optimization.html -.. _WP49: B6.7.wp49_language_research.html -.. _WP50: B6.7.wp50_validations.html -.. _WP59: B6.7.wp59_integration_config.html -.. _WP60: B6.7.wp60_documentation.html .. _WP90: B6.7.wp90_constraint_prog.html .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file From dinu at codespeak.net Fri Oct 3 19:44:23 2003 From: dinu at codespeak.net (dinu at codespeak.net) Date: Fri, 3 Oct 2003 19:44:23 +0200 (MEST) Subject: [pypy-svn] rev 1558 - pypy/trunk/src/pypy/tool Message-ID: <20031003174423.260675C3F5@thoth.codespeak.net> Author: dinu Date: Fri Oct 3 19:44:23 2003 New Revision: 1558 Modified: pypy/trunk/src/pypy/tool/fixeol Log: Added doc strings Modified: pypy/trunk/src/pypy/tool/fixeol ============================================================================== --- pypy/trunk/src/pypy/tool/fixeol (original) +++ pypy/trunk/src/pypy/tool/fixeol Fri Oct 3 19:44:23 2003 @@ -1,18 +1,23 @@ #! /usr/bin/env python + import sys, os + forbidden = range(0,32) forbidden.remove(9) # tab forbidden.remove(10) # lf forbidden.remove(12) # ^L forbidden.remove(13) # cr + def looksbinary(data, forbidden = [chr(i) for i in forbidden]): + "Check if some data chunk appears to be binary." for c in forbidden: if c in data: return True return False + # hack to get the platform's native end-of-line format f = open('@fixeol at tmp.txt', 'w') print >> f @@ -22,8 +27,9 @@ f.close() os.unlink('@fixeol at tmp.txt') + def binary2text(filename, native_eol = native_eol): - # convert to the platform's native end-of-line format if needed + "Convert a file to the platform's native end-of-line format if needed." f = open(filename, 'rb') data = f.read() f.close() @@ -39,7 +45,9 @@ f.close() return True + def asserttextfile(fname): + "Assert a file is a text file or issue a warning otherwise." # safety check to nail binary files if not binary2text(fname): print >> sys.stderr, "*** warning, looks like a binary file:", @@ -50,6 +58,7 @@ def fixpyfiles(ignored, dirname, fnames): + "Fix Python files in some directory." numpyfiles = 0 for fname in fnames: if fname.endswith('.py') or fname.endswith('.txt') or fname.endswith('.asc'): @@ -70,6 +79,7 @@ if '.svn' in fnames: fnames.remove('.svn') + if __name__ == '__main__': if len(sys.argv) > 1: for fname in sys.argv[1:]: From tomek at codespeak.net Sat Oct 4 11:19:36 2003 From: tomek at codespeak.net (tomek at codespeak.net) Date: Sat, 4 Oct 2003 11:19:36 +0200 (MEST) Subject: [pypy-svn] rev 1559 - pypy/trunk/src/pypy/translator Message-ID: <20031004091936.EE2195A4D1@thoth.codespeak.net> Author: tomek Date: Sat Oct 4 11:19:36 2003 New Revision: 1559 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: I refactored the generating the code for the operations. Now there is a special class Op with dynamic dispatching for the cases, which we want handle separately. Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 11:19:36 2003 @@ -8,6 +8,85 @@ from pypy.translator.flowmodel import * from pypy.translator.annotation import Annotator, set_type, get_type +class Op: + def __init__(self, operation, gen, block): + self._str = gen._str + self.gen = gen + self.argnames = [self._str(arg, block) for arg in operation.args] + self.resultname = self._str(operation.result, block) + self.op = operation + #op.opname + + def __call__(self): + operator = self.gen.ops.get(self.op.opname, self.op.opname) + #print "operator, ", self.op.opname, operator, self.gen.ops + + args = self.argnames + if not (operator[0] >= "a" and operator[0] <= "z"): + if len(args) == 1: + return "%s = %s %s" % (self.resultname, operator) + args + elif len(args) == 2: + return "%s = %s %s %s" % (self.resultname, args[0], operator, args[1]) + elif len(args) == 3 and operator == "**": #special case, have to handle it manually + return "%s = pow(%s, %s, %s)" % (self.resultname,) + args + else: + raise NotImplementedError, "I don't know to handle the operator %s (arity %s)" \ + % (operator, len(args)) + else: + method = getattr(self, "op_%s" % operator, self.generic_op) + return method() + + + def generic_op(self): + """Generic handler for all operators, which I don't handle explicitly""" + + return "%s = %s(%s)" % (self.resultname, self.op.opname, ", ".join(self.argnames)) + + def op_next_and_flag(self): + lines = [] + args = self.argnames + lines.append("try:") + lines.append(" _nextval = %s.next()" % args[0]) + lines.append("except StopIteration:") + lines.append(" %s = None, 0" % self.resultname) + lines.append("else:") + lines.append(" %s = _nextval, 1" % self.resultname) + return "\n".join(lines) + + def op_getitem(self): + return "%s = %s[%s]" % (self.resultname,) + self.argnames + + def op_newtuple(self): + if self.argnames: + return "%s = (%s,)" % (self.resultname, ", ".join(self.argnames)) + else: + return "%s = ()" % self.resultname + + def op_newlist(self): + if self.argnames: + return "%s = [%s,]" % (self.resultname, ", ".join(self.argnames)) + else: + return "%s = []" % self.resultname + + def op_newdict(self): + pairs = [] + for i in range(0, len(self.argnames), 2): + pairs.append("%s: %s, " % (self.argnames[i], self.argnames[i+1])) + return "%s = {%s}" % (self.resultname, "".join(pairs)) + + def op_call(self): + a = self.argnames + return "%s = %s(*%s, **%s)" % (self.resultname, a[0], a[1], a[2]) + + def op_getattr(self): + args = self.argnames + attr = self.op.args[1] + if isinstance(attr, Constant): ###don't we have only the strings here? + return "%s = %s.%s" % (self.resultname, args[0], attr.value) + else: + return "%s = getattr(%s)" % (self.resultname, ", ".join(args)) + + class GenPyrex: def __init__(self, functiongraph): self.functiongraph = functiongraph @@ -94,64 +173,10 @@ blockids = self.blockids blockids.setdefault(block, len(blockids)) - self.putline('cinline "Label%s:"' % blockids[block]) for op in block.operations: - argnames = [self._str(arg, block) for arg in op.args] - resultname = self._str(op.result, block) - # XXX refactor me - if op.opname == 'next_and_flag': - self.putline("try:") - self.putline(" _nextval = %s.next()" % argnames[0]) - self.putline("except StopIteration:") - self.putline(" %s = None, 0" % resultname) - self.putline("else:") - self.putline(" %s = _nextval, 1" % resultname) - elif op.opname == 'getitem': - self.putline("%s = %s[%s]" % (resultname, argnames[0], - argnames[1])) - elif op.opname == 'newtuple': - self.putline("%s = (%s)" % ( - resultname, "".join([s+", " for s in argnames]))) - elif op.opname == 'newlist': - self.putline("%s = [%s]" % ( - resultname, "".join([s+", " for s in argnames]))) - elif op.opname == 'newdict': - pairs = [] - for i in range(0, len(argnames), 2): - pairs.append("%s: %s, " % (argnames[i], argnames[i+1])) - self.putline("%s = {%s}" % (resultname, "".join(pairs))) - elif op.opname == 'call': - self.putline("%s = %s(*%s, **%s)" % (resultname, argnames[0], - argnames[1], argnames[2])) - elif op.opname == 'simple_call': - self.putline("%s = %s(%s)" % (resultname, argnames[0], - ", ".join(argnames[1:]))) - else: - # short-cuts [getattr,] - if op.opname == 'getattr': - attr = op.args[1] - if isinstance(attr,Constant): - # XXX check that attr.value is a string and a - # XXX valid Python identifiers - self.putline("%s = %s.%s" % (resultname,argnames[0], - attr.value)) - continue - opsymbol = self.ops[op.opname] - arity = self.oparity[op.opname] - assert(arity == len(op.args)) - if arity == 1 or arity == 3 or "a" <= opsymbol[0] <= "z": - self.putline("%s = %s(%s)" % (resultname, opsymbol, - ", ".join(argnames))) - elif 0: - # XXX in-place operators don't work, fixme - self.putline("%s = %s; %s += %s" % ( - resultname, argnames[0], - resultname, argnames[1])) - else: - # infix operator - self.putline("%s = %s %s %s" % (resultname, argnames[0], - opsymbol, argnames[1])) + opg = Op(op, self, block) + self.putline(opg()) self.dispatchBranch(block, block.branch) From tomek at codespeak.net Sat Oct 4 13:46:45 2003 From: tomek at codespeak.net (tomek at codespeak.net) Date: Sat, 4 Oct 2003 13:46:45 +0200 (MEST) Subject: [pypy-svn] rev 1569 - in pypy/trunk/src/pypy: objspace/flow translator translator/test Message-ID: <20031004114645.9D0AD5C42F@thoth.codespeak.net> Author: tomek Date: Sat Oct 4 13:46:44 2003 New Revision: 1569 Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: There are some small changes in genpyrex (for example now there are no def object v... statement), and I added two tests to test_pyrextrans, which are now now executet, because the fail. Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 4 13:46:44 2003 @@ -11,7 +11,9 @@ # ______________________________________________________________________ class FlowObjSpace(ObjSpace): def initialize(self): - self.w_builtins = W_Variable() + import __builtin__ + self.w_builtins = W_Constant(__builtin__.__dict__) + self.w_KeyError = W_Constant(KeyError) #self.make_builtins() #self.make_sys() Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 13:46:44 2003 @@ -113,7 +113,8 @@ return "\n".join(self.lines) def putline(self, line): - self.lines.append(" " * self.indent + line) + if line: + self.lines.append(" " * self.indent + line) def gen_Graph(self): fun = self.functiongraph @@ -125,14 +126,14 @@ # emit the header after the body functionbodylines = self.lines self.lines = currentlines - inputargnames = [ self._declvar(var) for var in fun.startblock.input_args ] + inputargnames = [ " ".join(self._paramvardecl(var)) for var in fun.startblock.input_args ] params = ", ".join(inputargnames) self.putline("def %s(%s):" % (fun.functionname, params)) self.indent += 1 #self.putline("# %r" % self.annotations) for var in self.variablelocations: if var not in fun.startblock.input_args: - self.putline("cdef %s" % self._declvar(var)) + self.putline(self._vardecl(var)) self.indent -= 1 self.lines.extend(functionbodylines) @@ -148,13 +149,21 @@ prefix = "" return prefix + var.pseudoname - def _declvar(self, var): + def _paramvardecl(self, var): vartype = self.get_type(var) if vartype == int: - ctype = "int " + ctype = "int" else: - ctype = "object " - return ctype + self.get_varname(var) + ctype = "object" + + return (ctype, self.get_varname(var)) + + def _vardecl(self, var): + vartype, varname = self._paramvardecl(var) + if vartype != "object": + return "cdef %s %s" % (vartype, varname) + else: + return "" def _str(self, obj, block): if isinstance(obj, Variable): Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 4 13:46:44 2003 @@ -85,5 +85,28 @@ poor_man_range = self.make_cfunc(self.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) + #____________________________________________________ + + def attrs(): + def b(): pass + b.f = 4 + b.g = 5 + + return b.f + b.g + + def _test_attrs(self): + attrs = self.make_cfunc(self.attrs) + self.assertEquals(attrs(), 9) + + #_____________________________________________________ + + def builtinusage(self): + return pow(2,2) + + def _test_builtinusage(self): + fun = self.make_cfunc(self.builtinusage) + self.assertEquals(fun(), 4) + + if __name__ == '__main__': test.main() From hpk at codespeak.net Sat Oct 4 16:51:23 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 4 Oct 2003 16:51:23 +0200 (MEST) Subject: [pypy-svn] rev 1576 - pypy/trunk/src/pypy/objspace/ann Message-ID: <20031004145123.4007F5A298@thoth.codespeak.net> Author: hpk Date: Sat Oct 4 16:51:22 2003 New Revision: 1576 Removed: pypy/trunk/src/pypy/objspace/ann/ Log: removed the ann-space because this is now all done by flowobjspace and stuff in the translator-section. From pedronis at codespeak.net Sat Oct 4 17:25:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 4 Oct 2003 17:25:30 +0200 (MEST) Subject: [pypy-svn] rev 1577 - pypy/trunk/doc Message-ID: <20031004152530.9094C5A298@thoth.codespeak.net> Author: pedronis Date: Sat Oct 4 17:25:30 2003 New Revision: 1577 Added: pypy/trunk/doc/grove.pdf (contents, props changed) Log: thesis on type-inference/call-graph constr. for OO languages. Added: pypy/trunk/doc/grove.pdf ============================================================================== Binary file. No diff available. From arigo at codespeak.net Sat Oct 4 17:32:03 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 4 Oct 2003 17:32:03 +0200 (MEST) Subject: [pypy-svn] rev 1578 - in pypy/trunk/doc: . funding papers Message-ID: <20031004153203.BD5C35A298@thoth.codespeak.net> Author: arigo Date: Sat Oct 4 17:32:02 2003 New Revision: 1578 Added: pypy/trunk/doc/funding/OOPSLA.Squeak.html pypy/trunk/doc/funding/dsl.ps.gz (contents, props changed) pypy/trunk/doc/funding/hlzle91optimizing.pdf pypy/trunk/doc/funding/ivme03.pdf (contents, props changed) pypy/trunk/doc/funding/kelsey97prescheme.pdf (props changed) - copied unchanged from rev 1572, pypy/trunk/doc/kelsey97prescheme.pdf pypy/trunk/doc/funding/popl95.ps.gz (contents, props changed) pypy/trunk/doc/funding/reconciling-responsiveness-with-performance.pdf (contents, props changed) pypy/trunk/doc/funding/ucpy-reverse-engineering-python.pdf (contents, props changed) pypy/trunk/doc/papers/ pypy/trunk/doc/papers/grove.pdf (props changed) - copied unchanged from rev 1577, pypy/trunk/doc/grove.pdf Removed: pypy/trunk/doc/grove.pdf pypy/trunk/doc/kelsey97prescheme.pdf Modified: pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/better-uvm.pdf (props changed) Log: Added papers that we want to reference. The ones in funding/ should (?) be printed as annexes. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sat Oct 4 17:32:02 2003 @@ -62,12 +62,12 @@ difficult to factor into relatively independent components, which makes structural changes to a large interpreter cumbersome. While the efficiency costs are well-known, the costs inherent to the lack -flexibility [REF] are often underestimated by the community of language +flexibility [popl95.ps.gz][dsl.ps.gz] are often underestimated by the community of language users. In practice, what often occurs for newly popular languages is that the user base creates pressure about the efficiency issue and motivates a group of developers to write a native Just In Time (JIT) compiler, adding a significant amount of code and complexity and further -impairing the flexibility. +impairing the flexibility.[ivme03.pdf] The Flexibility Goal @@ -142,19 +142,25 @@ confirmed in practice so far; the only examples that one could give are derived from bad or buggy low-level algorithms being repeatedly reimplemented in C programs while higher-level languages natively -provide the correct algorithms. Also note that languages can be static +provide the correct algorithms. + +:DELETE:BEGIN + +Also note that languages can be static or dynamic independently of being high or low-level: high-level expressive languages can be static and efficient [OCAML] while inexpressive ones can be dynamic and much less efficient [PROLOG]. +:DELETE:END + The PyPy project -- phase one -- aims to write a Python interpreter using Python itself as the implementation language for flexibility, with the additional constraint that core parts should be written in a more static subset of the language, a restriction that opens the door to static analysis and translation to a low-level language like C. This -approach has already been taken, e.g. for the Scheme language [REF], but -we have an original approach to the translation process that we will -describe later. +approach has already been taken, e.g. for the Scheme [kelsey97prescheme.pdf] +and Squeak [OOPSLA.Squeak.html] language, but we have an original approach +to the translation process that we will describe later. The net result will be an interpreter whose performance is comparable to today's C-based implementation, but more flexible. The translation is @@ -190,7 +196,7 @@ ------------- JIT compilers have been reasonably well studied; an account of their -history is given in [REF:jit-history.ps]. But actually writing a JIT for +history is given in [jit-history.pdf]. But actually writing a JIT for a given language is generally a major task. Different techniques to ease this path have been recently explored; let us cite: @@ -201,19 +207,20 @@ to leverage its benefits to the new language. This path is not only much shorter than designing a complete custom JIT, but it is also easier to maintain and evolve. This idea is explored for the Self virtual machine - in [REF:http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf]. As - pointed out in that paper, some source language features may not match + in [oopsla-vm-wkshp.pdf]. + As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue araises, we are left with the hard problem of refactoring an efficient JIT-based virtual machine. + XXX state-of-the-art in Self: [hlzle91optimizing.pdf] + [reconciling-responsiveness-with-performance.pdf]. * a completely different approach: making it easier to derive a JIT from - an existing C interpreter. DynamoRIO [REF] instrumentates the execution + an existing C interpreter. DynamoRIO instrumentates the execution of compiled programs and optimizes them dynamically. It has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the - processor-time interpretative overhead - [REF:http://www.ai.mit.edu/~gregs/dynamorio.htm]. While this offers a + processor-time interpretative overhead [ivme03.pdf]. While this offers a highly competitive gain/effort ratio, performance does not reach the levels of a hand-crafted JIT. @@ -227,7 +234,9 @@ high-level Python source of PyPy. This will be accomplished by integrating the technology developed in -Psyco [REF], a prototype JIT for the Python programming language. It is +Psyco [psyco], a prototype JIT for the Python programming language. +XXX [ucpy-reverse-engineering-python.pdf] +It is more precisely a specializing JIT compiler based on abstract interpretation. @@ -267,8 +276,10 @@ not a very complex task. Some type inference is needed, but it can be kept simple by suitably restricting the amount of allowed dynamism. +XXX rewrite all this stuff + However, instead of analysing source code, we propose another approach: -doing the type inference by abstract interpretation [REF]. This is +doing the type inference by abstract interpretation. This is essentially the way Psyco works, albeit it does it at run-time. [FIXME: has it already been done elsewhere?] [otherwise explain in a FOOTNOTE: the essential idea is to "interpret" the Python source code that we want @@ -311,3 +322,46 @@ :DELETE:END + +References: + +[popl95.ps.gz] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers +and Modular Interpreters". 22nd ACM Symposium on Principles of Programming +Languages (POPL'95). January 1995. +http://java.sun.com/people/sl/papers/popl95.ps.gz + +[dsl.ps.gz] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. +http://haskell.org/frp/dsl.ps + +[ivme03.pdf] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. +http://www.ai.mit.edu/~gregs/dynamorio.html + +[kelsey97prescheme.pdf] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. +http://citeseer.nj.nec.com/kelsey97prescheme.html + +[OOPSLA.Squeak.html] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. +ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +[jit-history.pdf] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. + +[oopsla-vm-wkshp.pdf] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop +on Simplicity, Performance and Portability in Virtual Machine Design, +OOPSLA '99, Denver, CO, Nov 2, 1999. +http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + +[hlzle91optimizing.pdf] Urs Hlzle, Craig Chambers, and David Ungar, +"Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic +Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published +as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, +Berlin, 1991. +http://self.sunlabs.com/papers/ecoop91.ps.Z + +[reconciling-responsiveness-with-performance.pdf] Urs H?lzle, David Ungar, +"Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", +PLDI `94 and OOPSLA `94 +http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf + +[psyco] Armin Rigo, http://psyco.sourceforge.net + +[ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. +http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf Added: pypy/trunk/doc/funding/OOPSLA.Squeak.html ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/OOPSLA.Squeak.html Sat Oct 4 17:32:02 2003 @@ -0,0 +1,1099 @@ + + + + + + + + + + +

Back to the Future

+ +

The Story of Squeak, A Practical Smalltalk +Written in Itself

+ +

by

+ +

Dan Ingalls Ted Kaehler John Maloney Scott +Wallace Alan Kay

+ +

at Apple Computer while doing this work, now at

+
+ +
Walt Disney Imagineering 
+1401 Flower Street 
+P.O. Box 25020 
+Glendale, CA 91221
+dani at wdi.disney.com
+
+
+ +

Abstract

+ +

Squeak is an open, highly-portable Smalltalk implementation +whose virtual machine is written entirely in Smalltalk, making it +easy to debug, analyze, and change. To achieve practical +performance, a translator produces an equivalent C program whose +performance is comparable to commercial Smalltalks.

+ +

Other noteworthy aspects of Squeak include: a compact object +format that typically requires only a single word of overhead per +object; a simple yet efficient incremental garbage collector for +32-bit direct pointers; efficient bulk-mutation of objects; +extensions of BitBlt to handle color of any depth and +anti-aliased image rotation and scaling; and real-time sound and +music synthesis written entirely in Smalltalk.

+ +

Overview

+ +

Squeak is a modern implementation of Smalltalk-80 that is +available for free via the Internet, at http://www.research.apple.com/research/proj/learning_concepts/squeak/ +and other sites.

+ +

It includes platform-independent support for +color, sound, and image processing. Originally developed on the +Macintosh, members of its user community have since ported it to +numerous platforms including Windows 95 and NT, Windows CE, all +common flavors of UNIX, and the Acorn.

+ +

Squeak stands alone as a +practical Smalltalk in which a researcher, professor, or +motivated student can examine source code for every part of the +system, including graphics primitives and the virtual machine +itself, and make changes immediately and without needing to see +or deal with any language other than Smalltalk. It also runs +bit-identical images across its wide portability base. Three +strands weave through this paper: +

  1. the design of the Squeak +virtual machine, which differs in several interesting ways from +the implementation presented in the Smalltalk "Blue +Book" [Gold83] and explored in the "Green Book" +[Kras83];
  2. an implementation strategy based on writing the +Squeak virtual machine in Smalltalk and translating it into C, +using an existing Smalltalk for bootstrapping until Squeak was +able to debug and generate its own virtual machine; and
  3. the +incremental development process through which Squeak was created +and evolved over the course of a year.

+ +

Background

+ +

In December of +1995, the authors found themselves wanting a development +environment in which to build educational software that could be +used—and even programmed—by non-technical people, and +by children. We wanted our software to be effective in +mass-access media such as PDAs and the Internet, where download +times and power considerations make compactness essential, and +where hardware is diverse, and operating systems may change or be +completely absent. Therefore our ideal system would be a small, +portable kernel of simple and uniform design that could be +adapted rapidly to new delivery vehicles. We considered using +Java but, despite its promise, Java was not yet mature: its +libraries were in a state of flux, few commercial implementations +were available, and those that were available lacked the hooks +required to create the kind of dynamic change that we envisioned.

+ +

While Smalltalk met the technical desiderata, none of the +available implementations gave us the kind of control we wanted +over graphics, sound, and the Smalltalk engine itself, nor the +freedom to port and distribute the resulting work, including its +host environment, freely over the Internet. Moreover, we felt +that we were not alone, that many others in the research +community shared our desire for an open, portable, malleable, and +yet practical object-oriented programming environment. It became +clear that the best way to get what we all wanted was to build a +new Smalltalk with these goals and to share it with this wider +community.

+ +

Project Plan

+ +

We did not have to start from scratch, as +we had access to the existing Apple Smalltalk-80 implementation, +which was a gold mine of useful software. This system consisted +of an image, or object memory, containing the Smalltalk-80 class +library, and a separate interpreter, or VM (virtual machine), for +running on the Macintosh. However, the Apple image format was +limited by its use of indirect pointers and an object table. +Worse yet, the original interpreter consisted of 120 pages of +sparsely commented 68020 assembly code that had passed through +the hands of seven authors. Portable it was not.

+ +

We determined +that implementation in C would be key to portability but none of +us wanted to write in C. However, two of us had once adapted the +Smalltalk formatter (pretty-printer) to convert a body of code to +BCPL. Based on that experience, we determined to write and debug +the virtual machine in Smalltalk. Then, in parallel, we would +write (also in Smalltalk) a translator from Smalltalk to C, and +thus let Smalltalk build its own production interpreter. Out of +this decision grew the following plan for building a new +Smalltalk system in the shortest possible time:

+ +

Produce a new +image:

  • Design a new Object Memory and image file format. +
  • +
  • Alter the ST-80 System Tracer to write an image in the new +format.
  • +
  • Eliminate uses of Mac Toolbox calls to restore +Smalltalk-80 portability.
  • +
  • Write a new file system with a +simple, portable interface.
+Produce a new interpreter written in +Smalltalk:
  • Type in the Blue Book descriptions for the +Interpreter and BitBlt.
  • +
  • Write a completely new Object +Memory class.
  • +
  • Debug the new Object Memory, Interpreter and +BitBlt.
Compile the interpreter to make it practical: +
  • +Design a translator from a subset of Smalltalk-80 to C.
  • +Implement this translator.
  • Translate the virtual machine +to C and compile it.
  • Write a small C interface to the Mac +OS.
  • Run the compiled interpreter with the new image.
By +following this plan, facilities became available just as they +were needed. For example, the interpreter and object memory were +debugged using a temporary memory allocator that had no way to +reclaim garbage. However, since the system only executed a few +byte codes, it never got far enough to run out of memory. +Likewise, while the translator was being prepared, most of the +bugs in the interpreter and object memory were found and fixed by +running them in Smalltalk.

+ +

It was easy to stay motivated, because +the virtual machine, running inside Apple Smalltalk, was actually +simulating the byte codes of the transformed image just five +weeks into the project. A week later, we could type "3 + +4" on the screen, compile it, and print the result, and the +week after that the entire user interface was working, albeit in +slow motion. We were writing the C translator in parallel on a +commercial Smalltalk, and by the eighth week, the first +translated interpreter displayed a window on the screen. Ten +weeks into the project, we "crossed the bridge" and +were able to use Squeak to evolve itself, no longer needing to +port images forward from Apple Smalltalk. About six weeks later, +Squeak's performance had improved to the point that it could +simulate its own interpreter and run the C translator, and Squeak +became entirely self-supporting.

+ +

We attribute the speed with +which this initial work was accomplished to the Squeak +philosophy: do everything in Smalltalk so that each improvement +makes everything smaller, faster, and better. It has been a +pleasant revelation to work on such low-level system facilities +as real-time garbage collection and FM music synthesis from +within the comfort and convenience of the Smalltalk-80 language +and environment.

+ +

Once we had a stable, usable interpreter, the +focus shifted from creation to evolution. Performance improved +steadily and support for color, image transforms, sound +synthesis, and networking were added. These improvements were +made incrementally, as the need arose, and in parallel with other +projects that relied on the stability of the virtual machine. Yet +despite the apparent risk of frequent changes to the VM, Squeak +has proven as dependable as most commercial Smalltalks we have +used. We attribute this success partly to our passion for design +simplicity but mostly to the strategy of implementing the virtual +machine in Smalltalk.

+ +

The remainder of the paper discusses +various aspects of the Squeak implementation, its memory +footprint and performance, the evolution of its user community, +and plans for its future.

+ +

The Interpreter

+

We knew that the +published Blue Book interpreter description would suffice to get +us started. Moreover, we were spared from the tedium of +transcription by Mario Wolczko, who had already keyed in the code +for use as an on-line reference source for a Smalltalk +implementation project at the University of Manchester.

+ +

The +interpreter is structured as a single class that gets translated +to C along with the Object Memory and BitBlt classes. In +addition, a subclass (Interpreter Simulator) runs all the same +code from within a Smalltalk environment by supporting basic +mouse, file, and display operations. This subclass was the basis +for debugging the Squeak system into existence. All of this code +is included in the Squeak release and it can run its own image, +albeit at a snail's pace (every memory access, even in BitBlt, +runs a Smalltalk method). Having an interpreter that runs within +Smalltalk is invaluable for studying the virtual machine. Any +operation can be stopped and inspected, or it can be instrumented +to gather timing profiles, exact method counts, and other +statistics.

+ +

Although we have constantly amended the interpreter +to achieve increasing performance, we have stayed pretty close to +the Blue Book message interface between the Interpreter and the +Object Memory. It is a testament to the original design of that +interface that completely changing the Object Memory +implementation had almost no impact on the Interpreter.

+ +

The Object Memory

+ +

The design of an object memory that is general and +yet compact is not simple. We all agreed immediately on a number +of parameters, though. For efficiency and scalability to large +projects, we wanted a 32-bit address space with direct pointers +(i.e., a system in which an object reference is just the address +of that object in memory). The design had to support all object +formats of our existing Smalltalk. It must be amenable to +incremental garbage collection and compaction. Finally, it must +be able to support the "become" operation (exchange +identity of two objects) to the degree required in normal +Smalltalk system operation. While anyone would agree that objects +should be stored compactly, every object in Smalltalk requires +the following "overhead" information:

  • Size of +the object in bytes: 24 bits or more,
  • Class of the object: +a full 32-bit object pointer,
  • Hash code for indexing +objects: at least 12 bits,
  • Format of the object, +specifying pointer or bits, indexable or not, etc.: 4 bits at +least,
  • ...and, of course, a few extra bits for storage +management needs.

+ +

A simple approach would be to allocate three +full 32-bit words as the header to every object. However, in a +system of 40k objects, this cavalier expenditure of 500k bytes of +memory could make the difference between an undeployable +prototype and a practical application. Therefore, we designed a +variable-length header format which seldom requires more than a +single 32-bit word of header information per object. The format +is given in Tables 1 and 2.

+
+ + + + + +
Table 1: Format of a Squeak object header
offsetcontents occurrence
-8 size in +words (30 bits), header type (2 bits) 1%
-4 full class pointer (30 bits), header type (2 bits) 18%
0 base header, as follows...
+storage management (3 bits)
+object hash (12 bits)
+compact class index (5 bits)
+object format field (4 bits, see below)
+size in words (6 bits)
+header type (2 bits)
100%


+
+ + + + + + + + + + +
Table 2: Encoding of the object format field in +a Squeak object header
0 no fields
1 fixed pointer fields
2 indexable pointer fields
3 both fixed and indexable pointer fields
4 unused
5 unused
6 indexable word fields (no pointers)
7 unused
8-11 indexable byte fields (no pointers):
low 2 bits are +low 2 bits of size in bytes
12-15 compiled methods: low 2 bits +are low 2 bits of size in bytes.
+ The number of literals is +specified in method header, followed by the indexable bytes that +store byte codes.
+ +

Our design is based on the fact that most +objects in a typical Smalltalk image are small instances of a +relatively small number of classes. The 5-bit compact class index +field, if non-zero, is an index into a table of up to 31 classes +that are designated as having compact instances; the programmer +can change which classes these are. The 6-bit size field, if +non-zero, specifies the size of the object in words, +accommodating sizes up to 256 bytes (i.e., 64 words, with the +additional 2 bits needed to resolve the length of byte-indexable +objects encoded in the format field). With only 12 classes +designated as compact in the 1.18 Squeak release, around 81% of +the objects have only this single word of overhead. Most of the +rest need one additional word to store a full class pointer. Only +a few remaining objects (1%) are large enough to require a third +header word to encode their size, and this extra word of overhead +is a tiny fraction of their size.

+ +

Storage Management

+ +

Apple +Smalltalk had achieved good garbage collection behavior with a +simple two-generation approach similar to [Unga84]. At startup, +and after any full garbage collection (a mark and sweep of the +entire image), all surviving objects were considered to be old, +and all objects created subsequently (until the next full +collection) to be new. All pointer stores were checked and a +table maintained of "root" objects—old objects +that might contain pointers to new objects. In this way, an +incremental mark phase could be achieved by marking all new +objects reachable from these roots and sweeping the new object +area; unmarked new objects were garbage. Compaction was simple in +that system, owing to its use of an object table. Full garbage +collection was triggered either by an overflow of the roots +table, or by failure of an incremental collection to reclaim a +significant amount of space. That system was known to run +acceptably with less than 500k of free space and to perform +incremental reclamations in under 250 milliseconds on hardware of +the 80's (16MHz 68020).

+ +

For Squeak, we determined to apply the +same approach to our new system of 32-bit direct pointers. We +were faced immediately with a number of challenges. First, we had +to write an in-place mark phase capable of dealing with our +variable-length headers, including those that did not have an +actual class pointer in them. Then there was the need to produce +a structure for remapping object pointers during compaction, +since we did not have the convenient indirection of an object +table. Finally there was the challenge of rectifying all the +object pointers in memory within an acceptable time.

+ +

The +remapping of object pointers was accomplished by building a +number of relocation blocks down from the unused end of memory. A +thousand such blocks are reserved outside the object heap, +ensuring that at least one thousand objects can be moved even +when there is very little free space. However, if the object heap +ends with a free block, that space is also used for relocation +blocks. If there is not enough room for the number of relocation +blocks needed to do compaction in a single pass (almost never), +then the compaction may be done in multiple passes. Each pass +generates free space at the end of the object heap which can then +be used to create additional relocation blocks for the next pass.

+ +

+One more issue remained to be dealt with, and that was support of +the become operation without an object table. (The Smalltalk +become primitive atomically exchanges the identity of two +objects; to Smalltalk code, each object appears to turn into, or +"become," the other.) With an object table, the become +primitive simply exchanges the contents of two object table +entries. Without an object table, it requires a full scan of +memory to replace every pointer to one object with a pointer to +the other. Since full memory scans are relatively costly, we made +two changes. First, we eliminated most uses of become in the +Squeak image by changing certain collection classes to store +their elements in separate Array objects instead of indexed +fields. However, become operations are essential when adding an +instance variable to a class with extant instances, as each +instance must mutate into a larger object to accommodate the new +variable. So, our second change was to restructure the primitive +to one that exchanges the identity of many objects at once. This +allows all the instances of a class to be mutated in a single +pass through memory. The code for this operation uses the same +technique and, in fact, the very same code, as that used to +rectify pointers after compaction.

+ +

We originally sought to +minimize compaction frequency, owing to the overhead associated +with rectifying direct addresses. Our strategy was to do a fast +mark and sweep, returning objects to a number of free lists, +depending on size. Only when memory became overly fragmented +would we do a consolidating compaction.

+ +

As we studied and +optimized the Squeak garbage collector, however, we were able +radically to simplify this approach. Since an incremental +reclamation only compacts the new object space, it is only +necessary to rectify the surviving new objects and any old +objects that point to them. The latter are exactly those objects +marked as root objects. Since there are typically just a few root +objects and not many survivors (most objects die young), we +discovered that compaction after an incremental reclamation could +be done quickly. In fact, due to the overhead of managing free +lists, it turned out to be more efficient to compact after every +incremental reclamation and eliminate free lists altogether. This +was especially gratifying since issues of fragmentation and +coalescing had been a burden in design, analysis, and coding +strategy.

+ +

Two policy refinements reduced the incremental garbage +collection pauses to the point where Squeak became usable for +real-time applications such as music and animation. First, a +counter is incremented each time an object is allocated. When +this counter reaches some threshold, an incremental collection is +done even if there is plenty of free space left. This reduces the +number of new objects that must be scanned in the sweep phase, +and also limits the number of surviving objects. By doing a +little work often, each incremental collection completes quickly, +typically in 5-8 milliseconds. This is within the timing +tolerance of even a fairly demanding musician or animator.

+ +

The +second refinement is to tenure all surviving objects when the +number of survivors exceeds a certain threshold, a simplified +version of Ungar and Jackson's feedback-mediated tenuring policy +[UnJa88]. Tenuring is done as follows. After the incremental +garbage collection and compaction, the boundary between the old +and new object spaces is moved up to encompass all surviving new +objects, as if a full garbage collection had just been done. This +"clears the decks" so that future incremental +compactions have fewer objects to process. Although in theory +this approach could hasten the onset of the next full garbage +collection, such full collections are rare in practice. In any +case, Squeak's relatively lean image makes full garbage +collections less daunting than they might be in a larger system; +a full collection typically takes only 250 milliseconds in +Squeak. We have been using this storage manager in support of +real-time graphics and music for over a year now with extremely +satisfactory results. In our experience, 10 milliseconds is an +important threshold for latency in interactive systems, because +most of the other critical functions such as mouse polling, sound +buffer output and display refresh take place at a commensurate +rate.

+ +

BitBlt

+ +

For BitBlt as well, we began with the Blue Book +source code. However, the Blue Book code was written as a +simulation in Smalltalk, not as virtual machine code to run on +top of the Object Memory. We transformed the code into the latter +form, made a few optimizations, and this sufficed to get the +first Squeak running. The special cases we optimized are:

  • +the case when there is no source (store constant),
  • the +case when there is no halftone (store unmasked),
  • the +horizontal inner loop (no partial word stores).

+ +

Once Squeak +became operational, we immediately wanted to give it command over +color. We chose to support a wide range of color depths, namely: +1-, 2-, 4-, and 8-bit table-based color, as well as 16- and +32-bit direct RGB color (with 5 and 8 bits per color component +respectively). +

+ +

It was relatively simple to extend the internal +logic of BitBlt to handle multiple pixel sizes as long as source +and destination bit maps are of the same depth. To handle +operations between images of different depth, we provided a +default conversion, and added an optional color map parameter to +BitBlt to provide more control when appropriate. The default +behavior is simply to extend smaller source pixels to a larger +destination size by padding with zeros, and to truncate larger +source pixels to a smaller destination pixel size. This approach +works very well among the table-based colors because the color +set for each depth includes the next smaller depth's color set as +a subset. In the case of RGB colors, BitBlt performs the +zero-fill or truncation independently on each color component.

+ +

+The real challenge, however, involves operations between RGB and +table-based color depths. In such cases, or when wanting more +control over the color conversion, the client can supply BitBlt +with a color map. This map is sized so that there is one entry +for each of the source colors, and each entry contains a pixel in +the format expected by the destination. It is obvious how to work +with this for source pixel sizes of 8 bits or less (map sizes of +256 or less). But it would seem to require a map of 65536 entries +for 16 bits or 4294967296 entries for 32-bit color! However, for +these cases, Squeak's BitBlt accepts color maps of 512, 4096, or +32768 entries, corresponding to 3, 4, and 5 bits per color +component, and BitBlt truncates the source pixel's color +components to the appropriate number of bits before looking up +the pixel in the color map.

+ +

Smalltalk to C Translation

+ +

We have +alluded to the Squeak philosophy of writing everything in +Smalltalk. While the Blue Book contains a Smalltalk description +of the virtual machine that was actually executed at least once +to verify its accuracy, this description was meant to be used +only as an explanatory model, not as the source code of a working +implementation. In contrast, we needed source code that could be +translated into C to produce a reliable and efficient virtual +machine.

+ +

Our bootstrapping strategy also depended on being able +to debug the Smalltalk code for the Squeak virtual machine by +running it under an existing Smalltalk implementation, and this +approach was highly successful. Being able to use the powerful +tools of the Smalltalk environment saved us weeks of tedious +debugging with a C debugger. However, useful as it is for +debugging, the Squeak virtual machine running on top of Smalltalk +is orders of magnitude too slow for useful work: running in +Squeak itself, the Smalltalk version of the Squeak virtual +machine is roughly 450 times slower than the C version. Even +running in the fastest available commercial Smalltalk, the Squeak +virtual machine running in Smalltalk would still be sluggish.

+ +

The +key to both practical performance and portability is to translate +the Smalltalk description of the virtual machine into C. To be +able to do this translation without having to emulate all of +Smalltalk in the C runtime system, the virtual machine was +written in a subset of Smalltalk that maps directly onto C +constructs. This subset excludes blocks (except to describe a few +control structures), message sending, and even objects! Methods +of the interpreter classes are mapped to C functions and instance +variables are mapped to global variables. For byte code and +primitive dispatches, the special message dispatchOn:in: is +mapped to a C switch statement. (When running in Smalltalk, this +construct works by perform:-ing the message selector at the +specified index in a case array; since a method invocation is +much less efficient than a branch operation, this dispatch is one +of the main reasons that the interpreter runs so much faster when +translated to C).

+ +

The translator first translates Smalltalk into +parse trees, then uses a simple table-lookup scheme to generate C +code from these parse trees. There are only 42 transformation +rules, as shown in Table 3. Four of these are for integer +operations that more closely match those of the underlying +hardware, such as unsigned shifts, and the last three are macros +for operations so heavily used that they should always be +inlined. All translated code accesses memory through six C macros +that read and write individual bytes, 4-byte words, and 8-byte +floats. In the early stages of development, every such reference +was checked against the bounds of object memory.

+ +
+ +
Table 3: Operations of primitive Smalltalk
+
& | and: or: not
++ - * // \\ min: max:
+bitAnd: bitOr: bitXor: bitShift:
+< <= = > >= ~= ==
+isNil notNil
+whileTrue: whileFalse: to:do: to:by:do:
+ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:
+at: at:put:
+<< >> bitInvert32 preIncrement integerValueOf:
+integerObjectOf: isIntegerObject: 
+ + +

Our +first translator yielded a two orders of magnitude speedup +relative to the Smalltalk simulation, producing a system that was +immediately usable. However, one further refinement to the +translator yielded a significant additional speedup: inlining. +Inlining allows the source code of the virtual machine to be +factored into many small, precisely defined methods—thus +increasing code-sharing and simplifying debugging—without +paying the penalty in extra procedure calls. Inlining is also +used to move the byte code service routines into the interpreter +byte code dispatch loop, which both reduces byte code dispatch +overhead and allows the most critical VM state to be kept in +fast, register-based local variables. All told, inlining +increases VM performance by a factor of 3.4 while increasing the +overall code size of the virtual machine by only 13%.

+ +

Sound

+ +

+Several of us were involved in early experiments with computer +music editing and synthesis [Saun77], and it was a disappointment +to us that the original Smalltalk-80 release failed to +incorporate this vital aspect of any lively computing +environment. We determined to right this wrong in the Squeak +release.

+ +

Early on, we implemented access to the Macintosh sound +driver. As the performance of the Squeak system improved, we were +delighted to find that we could actually synthesize and mix +several voices of music in real time using simple wave table and +FM algorithms written entirely in Smalltalk.

+ +

Nonetheless, these +algorithms are compute-intensive, and we used this application as +an opportunity to experiment with using C translation to improve +the performance of isolated, time-critical methods. Sound +synthesis is an ideal application for this, since nearly all the +work is done by small loops with simple arithmetic and array +manipulation. The sound generation methods were written so that +they could be run directly in Smalltalk or, without changing a +line of code, translated into C and linked into the virtual +machine as an optional primitive. Since the sound generation code +had already been running for weeks in Smalltalk, the translated +primitives worked perfectly the first time they ran. Furthermore, +we observed nearly a 40-fold increase in performance: from 3 +voices sampled at 8 KHz, we jumped to over 20 voices sampled at +44 KHz.

+ +

WarpBlt

+ +

As we began doing more with general rotation and +scaling of images, we found ourselves dissatisfied with the slow +speed of non-integer scaling and image rotations by angles other +than multiples of 90 degrees. To address this problem in a simple +manner, we added a "warp drive" to BitBlt. WarpBlt +takes as input a quadrilateral specifying the traversal of the +source image corresponding to BitBlt's normal rectangular +destination. If the quadrilateral is larger than the destination +rectangle, sampling occurs and the image is reduced. If the +quadrilateral is smaller than the destination, then interpolation +occurs and the image is expanded. If the quadrilateral is a +rotated rectangle, then the image is correspondingly rotated. If +the source quadrilateral is not rectangular, then the +transformation will be correspondingly distorted.

+ +

Once we started +playing with arbitrarily rotated and scaled images, we began to +wish that the results of this crude warp were not so jagged. This +led to support for over sampling and smoothing in the warp drive, +which does a reasonable job of anti-aliasing in many cases. The +approach is to average a number of pixels around a given source +coordinate. Averaging colors is not a simple matter with the +table-based colors of 8 bits or less. The approach we used is to +map from the source color space to RGB colors, average the +samples in RGB space, and map the final result back to the +nearest indexed color via the normal depth-reducing color map.

+ +

As +with the sound synthesis work, WarpBlt is completely described in +Smalltalk, then translated into C to deliver performance +appropriate to interactive graphics.

+ +

Code Size and Memory Footprint

+ +

Table 4 gives the approximate size of the main +components of Squeak in lines of code, based on version 1.18 of +December, 1996. Our measurement includes all comments, but +excludes all blank lines. We present these statistics not as +rigorous measurement, but more as an order-of-magnitude gauge. +For instance, the entire virtual machine is approximately 100 +pages. Of that, 6547 lines are in Smalltalk (translator not +included) versus 1681 lines of OS interface in C that may need to +be altered for porting.

+
+ + + + +
Table 4: Lines of code in Squeak VM
SmalltalkLines C Lines
Interpreter3951OS interface 1681
Object Memory 1283
BitBlt with Warp 1313
+ +

The size of the 1.18 Squeak release +image, with all development support, including browsers, +inspectors, performance analyzers, color graphics, and music +support is 968K bytes on the Macintosh. The code for the virtual +machine, simulator, and Smalltalk-to-C translator, which are only +needed by those engaged in virtual machine development, adds 290K +to this figure. The interpreter, when running, requires 300K on a +Power PC Macintosh, and the entire Smalltalk environment runs +satisfactorily with as little as 200K of free space available. In +monochrome, the system runs comfortably in 1.8 MB. We distribute +a 650K image with the complete development environment that runs +in less than 1MB on the Cassiopeia hand held computer.

+ +

Performance and Optimization

+ +

Thanks to today's fast processors, +Squeak's performance was satisfactory from the moment the +translator produced its first C translation of the virtual +machine. Since this debut, Squeak's performance has improved +steadily, and the current version, 1.18, executes about four +million byte codes or 173 thousand message sends per second on a +110 MHz Power PC Mac 8100. Table 5 shows the improvement in +Squeak's performance over its first year. Two simple benchmarks +from the release were used to track the approximate byte code +execution rate ("10 benchmark") and the cost of full +method activation and return ("26 benchFib"). Note that +the latter benchmark measures the worst case; not all message +sends require a full activation.

+
+ + + + + + + + + +
Table 5: Squeak performance over time
Date byte codes/sec sends/sec
Apr. 14 458K 22,928
May 20 1,111K 60,287
May 23 1,522K 69,319
July 9 2,802K 134,717
Aug. 1 2,726K 130,945
Sept. 23 3,528K 141,155
Nov. 12 3,156K 133,164
Dec. 12 3,410K 169,617
Jan. 21 4,108K 173,360
+ +

The rapid +early leaps in performance were due partly to removal of +scaffolding—such as assertion checks and range checks on +memory references—and partly to improving the runtime model +of the translator. For example, object references were originally +represented as offsets relative to the base of the object memory +rather than as true direct pointers. After May, however, the easy +changes had all been made and improvements came in smaller +increments, sometimes only a few percent at a time. The most +significant of these optimizations include:

  • recycling +method contexts (this cut the allocation rate by a factor of 10) +
  • managing the frequency of checks for user and timer +interrupts
  • keeping the instruction and stack pointers (IP +and SP) in registers
  • making the IP and SP be direct +pointers, rather than offsets into their base object
  • +patching the dispatch loop to eliminate an unneeded +compiler-generated range check
  • eliminating store-checks +when storing into the active and home contexts
  • comparing +small integers as oops rather than converting them into integers +first
  • peeking for and doing a jump-if-false byte code that +follows a compare

+ +

Table 6 compares Squeak's current performance +over a small suite of benchmarks with that of several commercial +Smalltalk implementations that cover a cross-section of +implementation technologies, including a bytecode interpreter +similar to the original Smalltalk-80 virtual machine (Apple +Smalltalk), an aggressively optimized interpreter (ST/V Mac 1.1), +and two implementations using dynamic translation to native code +(ParcPlace Smalltalk 2.3 and 2.5). In order to draw meaningful +comparisons between Squeak and these 68K-based virtual machines, +all timings except those in the last column were taken on a Duo +230 (33Mhz 68030). Since Squeak runs significantly better on +modern processors with instruction caches and a generous supply +of registers, the final column of the table, SqueakPPC, shows +Squeak's performance relative to C on a Power PC-based Macintosh.

+ +
+ + + + + + + + + + +
Table 6: Virtual machine +performance relative to optimized, platform-native C for various +benchmarks. Smaller numbers are better. A result of 1.0 would +indicate that a benchmark ran exactly as fast as optimized C.
AppleST ST/V PP2.3 PP2.5 Squeak SqueakPPC
IntegerSum 185.00 32.00 7.58 6.92 62.34 72.56
VectorSum 99.00 30.0010.3011.5061.7041.01
PrimeSieve 53.00 40.0016.0712.1070.5351.57
BubbleSort 88.23 35.2921.3513.9880.2963.12
TreeSort 43.90 5.0020.291.9816.337.31
MatrixMult 40.79 6.0022.802.9418.0036.74
Recurse 28.26 9.473.732.0850.2635.19
+ +

So +far in the design of Squeak, we have emphasized simplicity, +portability, and small memory footprint over high performance. +Much better performance is possible. The PP2.3 and PP2.5 columns +of Table 6 are examples of Deutsch-Schiffman-style dynamic +translation (or "JIT") virtual machines [Deut84]. +Dynamic translation avoids the overhead of byte code dispatch by +translating methods into native instructions kept in a +size-bounded cache. The Self project [ChUn91] [H?lz94] broke new +ground in high performance by investing more compilation time in +heavily used methods, using inlining to eliminate expensive calls +and enable further optimizations. This work, which was later +extended to Smalltalk and Java [Anim96], shows that one can +obtain performance approaching half the speed of optimized C +without compromising the semantics of a clean language. +Unfortunately both of these approaches have resulted in virtual +machine implementations that are, by Squeak standards, +unapproachable and difficult to port.

+ +

We believe that Squeak can +enjoy the same performance as commercial Smalltalk +implementations without compromising malleability and +portability. In our experience the byte code basis of the +Smalltalk-80 standard [Inga78] is hard to beat for compactness +and simplicity, and for the programming tools that have grown +around it. Therefore dynamic translation is a natural avenue to +high performance. The Squeak philosophy implies that both the +dynamic translator and its target code sequences should be +written and debugged in Smalltalk, then automatically translated +into C to build the production virtual machine. By representing +translated methods as ordinary Smalltalk objects, experiments +with Self-style inlining and other optimizations could be done at +the Smalltalk level. This approach is currently being explored as +a way to improve Squeak's performance without adversely affecting +its portability.

+ +

The Squeak Community

+ +

As exciting as the day the +interpreter first ran, was the day we released Squeak to the +Internet community. In the back of our minds, we all felt that we +were finally doing, in September of 1996, what we had failed to +do in 1980. However, the code we released ran only on the +Macintosh and, although we had worked hard to make it portable, +we did not know if we had succeeded.

+ +

Three weeks later, we +received a message announcing Ian Piumarta's first UNIX port of +Squeak. He had ported it to seven additional UNIX platforms two +weeks later. At the same time, Andreas Raab announced ports of +Squeak for Windows 95 and Windows NT. Neither of these people had +even contacted us before starting their porting efforts! A mere +five weeks after it was released, Squeak was available on all the +major computing platforms except Windows 3.1, and had an active +and rapidly growing mailing list. Since that time, Squeak ports +have been done for Linux, the Acorn RISC, and Windows CE, and +several other ports are underway.

+ +

The Squeak release, including +the source code for the virtual machine, C translator and +everything else described in this paper, as well as all the ports +mentioned above, is available through the following sites: +<http://www.research.apple.com/research/proj/learning_concepts/squeak/> +<ftp://ftp.create.ucsb.edu> +<ftp://alix.inria.fr> +<ftp://ftp.cs.uni-magdeburg.de/pub/ Smalltalk/free/squeak> +

+ +

The Squeak license agreement explicitly grants the right to use +Squeak in commercial applications royalty-free. The only +requirement in return is that any ports of Squeak or changes to +the base class library must be made available for free on the +Internet. New applications and facilities built on Squeak do not +need to be shared. We believe that this licensing agreement +encourages the continued development and sharing of Squeak by its +user community.

+ +

Related Work

+ +

For the Smalltalk devotee, nothing +is more natural than the desire to attack all programming +problems with Smalltalk. Thus, there has long been a tradition of +using Smalltalk to describe and debug a low-level system before +its final implementation. As mentioned earlier, the Blue Book +used Smalltalk as a high-level description of a Smalltalk virtual +machine, and this description was actually checked for accuracy +by running it. In LOOM [Kaeh86], the kernel of a virtual object +memory was written and executed in a separate, simplified +Smalltalk virtual machine whenever an "object fault" +occurred. For better performance, this kernel was later +translated into BCPL semi-automatically, then fixed up by hand. +This experience planted the seed for the approach taken in Squeak +two decades later.

+ +

A number of recent systems translate complete +Smalltalk programs into lower-level languages to gain speed, +portability, or application packaging advantages. Smalltalk/X +[Gitt95] and SPiCE [YaDo95] generate C code from programs using +the full range of Smalltalk semantics, including blocks. Babel +[MWH94] translates Smalltalk applications into CLOS, and includes +a facility for automatically winnowing out unused classes and +methods.

+ +

Producer [Cox87] translated Smalltalk programs into +Objective C, but required the programmer to supply type +declarations and rules for mapping dynamically allocated objects +such as Points into Objective C record structures. Producer only +supported a subset of Smalltalk semantics because it depended on +the Objective C runtime and thus did not support blocks as +first-class objects. Squeak's Smalltalk-to-C translator restricts +the programmer to an even more limited subset of Smalltalk, but +that subset closely mirrors the underlying processor +architecture, allowing the translated code to run nearly as +efficiently as if it were written in C directly. The difference +arises from a difference in goals: The goal of Squeak's +translation is merely to support the construction of its own +virtual machine, a much simpler task than translating full-blown +Smalltalk programs into C. Squeak's translator is more in the +spirit of QUICKTALK [Ball86], a system that used Smalltalk to +define new primitive methods for the virtual machine. Another +Smalltalk-to-primitive compiler, Hurricane [Atki86], used a +combination of user-supplied declarations and simple type +inference to eliminate class checks and to inline integer +arithmetic. Unlike Squeak's translator, Hurricane allowed the +programmer to also use polymorphic arithmetic in the Smalltalk +code to be translated. Neither QUICKTALK nor Hurricane attempted +to produce an entire virtual machine via translation.

+ +

Type +information can help a translator produce more efficient code by +eliminating run-time type tests and enabling inlining. Typed +Smalltalk [JGZ88] added optional type declarations to Smalltalk +and used that type information to generate faster code. The +quality of its code was comparable to that of QUICKTALK but, to +the best of the authors' knowledge, the project's ultimate goal +of producing a complete, stand-alone Smalltalk virtual machine +was never realized. A different approach is to use type +information gathered during program execution to guide on-the-fly +optimization, as done in the Self [ChUn91] [H?lz94] and +Animorphic [Anim96] virtual machines. Note that using types for +optimization is independent of whether the programming language +has type declarations. The Self and Animorphic virtual machines +use type information to optimize declaration-free languages +whereas Strongtalk [BrGr93], which augments Smalltalk with an +optional type system to support the specification and +verification of interfaces, ran on a virtual machine that knew +nothing about those types. The subset of Smalltalk used for the +Squeak virtual machine maps so directly to the fundamental data +types of the hardware that the translator would not benefit from +additional type information. However, we have contemplated +building a separate primitive compiler that supports polymorphic +arithmetic, in which case the declaration-driven optimization +techniques of Hurricane and Typed Smalltalk would be beneficial. +

+ +

Future Work

+ +

Work on Squeak continues. We are overhauling Squeak's +graphics model to supplant the MVC model with a new one along the +lines of Morphic [Malo95] and Fabrik [Inga88]. We also plan to +complete Squeak's sound and music facilities by adding sound +input and MIDI input and output.

+ +

We are collaborating with Ian +Piumarta to produce a dynamic translation engine for Squeak, +inspired by Eliot Miranda's BrouHaHa Smalltalk [Mira87] and his +later work with portable threaded code. A top priority is to +build the entire engine in Smalltalk to keep it entirely +portable.

+ +

Just as we wanted Squeak to be endowed with music and +sound capability, we also wanted it to be easily interconnected +with the rest of the computing world. To this end, we are adding +network stream and datagram support to the system. While not yet +complete, the current facilities already support TCP/IP clients +and servers on Macintosh and Windows 95/NT, with UNIX support to +follow soon.

+ +

Conclusions

+ +

As far as we know, Squeak is the first +practical Smalltalk system written in itself that is complete and +self-supporting. Squeak runs the Smalltalk code describing its +own virtual machine fast enough for debugging purposes: although +it requires some patience, one can actually interact with menus +and windows in this mode. This is no mean feat, considering that +every memory reference in the inner loop of BitBlt is running in +Smalltalk.

+ +

To achieve useful levels of performance, the Smalltalk +code of the virtual machine is translated into C, yielding a +speedup of approximately 450. Part of this performance gain, a +factor of 3.4, can be attributed to the inlining of function +calls in the translation process. The translator can also be used +to generate primitive methods for computationally intensive inner +loops that manipulate fundamental data types of the machine such +as bytes, integers, floats, and arrays of these types.

+ +

The Squeak +virtual machine, since its source code is publicly available, +serves as an updated reference implementation for Smalltalk-80. +This is especially valuable now that the classic Blue and Green +Books [Gold83] [Kras83] are out of print. A number of design +choices made in the Blue Book that were appropriate for the +slower speed and limited address space of the computer systems of +the early 1980's have been revisited, especially those relating +to object memory and storage reclamation. Squeak also updates the +multimedia components of this reference system by adding color +support and image transformation capabilities to BitBlt and by +including sound output. While Squeak is not the first Smalltalk +to use modern storage management or to support multimedia, it +makes a valuable contribution by delivering these capabilities in +a small one-language package that is freely available, and that +runs identically on all platforms.

+ +

Final Reflections

+ +

While we +considered using Java for our project, we still feel that +Smalltalk offers a better environment for research and +development. At a time when the world is moving toward native +host widgets, we still feel that there is power and inspiration +in having all of the code for every aspect of computation and +display be immediately accessible, changeable, and identical +across platforms. Finally, when most development environments +fill 100 megabytes of disk space or more, Squeak is a portable, +malleable, full-service computing environment, including +browsing, split-second recompilation, and source debugging tools, +all in a 1-megabyte footprint. Though many of its strengths are +rooted in the past, Squeak is suited to the intimate computing +potential of PDAs and the Internet, and our work is, now more +than ever, inspired by the future.

+ +

Acknowledgments

+ +

The authors +wish to acknowledge the support of Apple Computer throughout this +project, especially Jim Spohrer, Don Norman, and Elizabeth Greer. +We especially appreciate their wisdom in seeing that Squeak would +be worth more if it were made freely available. We also wish to +thank the entire Squeak community for their encouragement and +support, especially those who have submitted code or donated +their time and energy to maintaining Squeak ports and the Squeak +mailing list and web sites.

+ +

References

+ +

+[Anim96] Animorphic Systems, Exhibit at OOPSLA '96. 
+         Animorphic Systems was a small company that included
+         several members of the Self team and
+         produced extremely high performance virtual machines for
+         Smalltalk and Java. The company has since been purchased by Sun
+         Microsystems. 
+
+[Atki86] Atkinson, R., "Hurricane: An Optimizing Compiler for Smalltalk,"
+         Proc. of the ACM OOPSLA '86 conf., September 1986, pp. 151-158.
+
+[BrGr93] Bracha, G. and Griswold, D., "Strongtalk: Typechecking Smalltalk
+         in a Production Environment," Proc. of the ACM OOPSLA '93 conf.,
+         September 1993.
+
+[Ball86] Ballard, M., Maier, D., and Wirffs-Brock, A., 
+         "QUICKTALK: A Smalltalk-80 Dialect for
+         Defining Primitive Methods," Proc. of the ACM OOPSLA '86
+         conf., September 1986, pp. 140-150. 
+
+[ChUn91] Chambers, C. and Ungar, D., "Making Pure 
+         Object-Oriented Languages Practical," Proc. of the ACM OOPSLA
+         '91 conf., November 1991, pp. 1-15. 
+
+[Cox87]  Cox, B. and Schmucker, K.,
+         "Producer: A Tool for Translating Smalltalk-80 to
+         Objective-C," Proc. of the ACM OOPSLA '87 conf., October
+         1987, pp. 423-429.
+
+[Deut84] Deutsch, L., and Schiffman, A.,
+         "Efficient Implementation of the Smalltalk-80 System,"
+         Proc. 11th ACM Symposium on Principles of Programming Languages,
+         January 1984, pp. 297-302.
+
+[Gitt95] Gittinger, Claus,
+         Smalltalk/X, ,http://www.informatik.uni-stuttgart.de/stx/stx.html 1995.
+
+[Gold83] Goldberg, A. and Robson, D., Smalltalk-80: The Language and Its
+         Implementation, Addison-Wesley, Reading, MA,1983.
+
+[H?lz94] H?lzle, U., Adaptive optimization for Self: Reconciling High
+         Performance with Exploratory Programming, Ph.D. Thesis, Computer
+         Science Department, Stanford University, 1994.
+
+[Inga78] Ingalls, D., "The Smalltalk-76 Programming System, Design and
+         Implementation" Proc. 5th ACM Symposium on Principles of
+         Programming Languages, Tucson, January 1978.
+
+[Inga88] Ingalls, D., Wallace, S., Chow, Y., Ludolph, F., and Doyle, K.,
+         "Fabrik: A Visual Programming Environment," Proc. of
+         the ACM OOPSLA '88 conf., September 1988, pp. 176-190.
+
+[JGZ88]  Johnson, R., Graver, J., and Zurawski, L.,"TS: An Optimizing
+         Compiler for Smalltalk," Proc. of the ACM OOPSLA '88 conf.,
+         September 1988, pp. 18-26.
+
+[Kaeh86] Kaehler, Ted, "Virtual
+         Memory on a Narrow Machine for an Object-Oriented Language,"
+         Proc. of the ACM OOPSLA '86 conf., September 1986, pp. 87-106.
+ 
+[Kras83] Krasner, G., ed., Smalltalk-80, Bits of History, Words
+         of Advice, Addison-Wesley, Reading, MA,1983.
+
+[Malo95] Maloney, J. and Smith, R., "Directness and Liveness
+         in the Morphic User Interface Construction Environment," 
+         UIST '95, November 1995.
+
+[Mira87] Miranda, E., "BrouHaHa—A Portable
+         Smalltalk Interpreter," Proc. of the ACM OOPSLA '87 conf.,
+         October 1987, pp. 354-365.
+
+[MWH94] Moore, I., Wolczko, M., and
+        Hopkins, T., "Babel—A Translator from Smalltalk into
+        CLOS," TOOLS USA 1994, Prentice Hall, 1994.
+
+[Saun77] Saunders, S., "Improved FM Audio Synthesis Methods for
+         Real-time Digital Music Generation," in Computer Music
+         Journal 1:1, February 1977. Reprinted in Computer Music, Roads,
+         C. and Strawn, J., eds., MIT Press, Cambridge, MA, 1985.
+
+[Unga84] Ungar, D.,"Generation Scavenging: A Non-Disruptive High
+         Performance Storage Reclamation Algorithm," Proc. ACM
+         Symposium on Practical Software Development Environments, April
+         1984, pp. 157-167. Also published as ACM SIGPLAN Notices 19(5),
+         May 1984 and ACM Software Engineering Notes 9(3), May 1984.
+
+[UnJa88] Ungar, D. and Jackson, F.,"Tenuring Policies for
+         Generation-Based Storage Reclamation," Proc. of the ACM
+         OOPSLA '88 conf., September 1988, pp. 18-26.
+
+[YaDo95] Yasumatsu, K. and Doi, N., "SPiCE: A System for Translating
+         Smalltalk
+          Programs Into a C Environment," IEEE Transactions on
+          Software Engineering 21(11), 1995, pp. 902-912.
+ + Added: pypy/trunk/doc/funding/dsl.ps.gz ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/hlzle91optimizing.pdf ============================================================================== Files (empty file) and pypy/trunk/doc/funding/hlzle91optimizing.pdf Sat Oct 4 17:32:02 2003 differ Added: pypy/trunk/doc/funding/ivme03.pdf ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/popl95.ps.gz ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/reconciling-responsiveness-with-performance.pdf ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/ucpy-reverse-engineering-python.pdf ============================================================================== Binary file. No diff available. Deleted: /pypy/trunk/doc/grove.pdf ============================================================================== Binary file. No diff available. Deleted: /pypy/trunk/doc/kelsey97prescheme.pdf ============================================================================== Binary file. No diff available. From hpk at codespeak.net Sat Oct 4 17:52:25 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 4 Oct 2003 17:52:25 +0200 (MEST) Subject: [pypy-svn] rev 1579 - in pypy/trunk/src/pypy: objspace/flow translator translator/test Message-ID: <20031004155225.E9C495A2A9@thoth.codespeak.net> Author: hpk Date: Sat Oct 4 17:52:25 2003 New Revision: 1579 Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_annotation.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_simplify.py pypy/trunk/src/pypy/translator/test/test_sourcegen.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: fixed all issues in order to make the complete test-suite work again Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 4 17:52:25 2003 @@ -8,6 +8,7 @@ from pypy.translator.flowmodel import * from pypy.objspace.flow import flowcontext +debug = 0 # ______________________________________________________________________ class FlowObjSpace(ObjSpace): def initialize(self): @@ -110,7 +111,7 @@ elif name == 'id': op = id else: - print >> sys.stderr, "XXX missing operator:", name + if debug: print >> sys.stderr, "XXX missing operator:", name def generic_operator(self, *args_w): assert len(args_w) == arity, name+" got the wrong number of arguments" Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 17:52:25 2003 @@ -54,7 +54,7 @@ return "\n".join(lines) def op_getitem(self): - return "%s = %s[%s]" % (self.resultname,) + self.argnames + return "%s = %s[%s]" % ((self.resultname,) + tuple(self.argnames)) def op_newtuple(self): if self.argnames: @@ -90,7 +90,6 @@ else: return "%s = getattr(%s)" % (self.resultname, ", ".join(args)) - class GenPyrex: def __init__(self, functiongraph): self.functiongraph = functiongraph @@ -117,8 +116,8 @@ return "\n".join(self.lines) def putline(self, line): - if line: - self.lines.append(" " * self.indent + line) + for l in line.split('\n'): + self.lines.append(" " * self.indent + l) def gen_Graph(self): fun = self.functiongraph Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Sat Oct 4 17:52:25 2003 @@ -2,8 +2,6 @@ generate Pyrex files from the flowmodel. """ -import autopath -from pypy.tool import test from pypy.interpreter.baseobjspace import ObjSpace from pypy.translator.flowmodel import * @@ -56,6 +54,7 @@ prevbranch.target = nextbranch.target #print "eliminated", node, nextbranch victims = True + # restart the elimination-for loop cleanly break return graph Modified: pypy/trunk/src/pypy/translator/test/test_annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_annotation.py (original) +++ pypy/trunk/src/pypy/translator/test/test_annotation.py Sat Oct 4 17:52:25 2003 @@ -6,7 +6,7 @@ from pypy.translator.annotation import Annotator, set_type, get_type from pypy.translator.flowmodel import * -class TestCase(test.IntTestCase): +class AnnonateTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') @@ -127,7 +127,8 @@ a = Annotator(fun) input_ann = [] set_type(fun.get_args()[0], int, input_ann) - import sys; print >> sys.stderr, a.build_annotations(input_ann) + #import sys; print >> sys.stderr, a.build_annotations(input_ann) + a.build_annotations(input_ann) end_var, end_ann = a.end_annotations() self.assertEquals(get_type(end_var, end_ann), int) Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 4 17:52:25 2003 @@ -1,4 +1,3 @@ - import autopath from pypy.tool import test from pypy.tool.udir import udir @@ -6,14 +5,14 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = 1 +make_dot = 0 if make_dot: from pypy.translator.test.make_dot import make_dot else: def make_dot(*args): pass -class TestCase(test.IntTestCase): +class PyrexGenTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') @@ -27,7 +26,7 @@ name = func.func_name funcgraph = self.space.build_flow(func) from pypy.translator.simplify import eliminate_empty_blocks - eliminate_empty_blocks(funcgraph) + #eliminate_empty_blocks(funcgraph) funcgraph.source = inspect.getsource(func) result = GenPyrex(funcgraph).emitcode() make_dot(funcgraph, udir, 'ps') Modified: pypy/trunk/src/pypy/translator/test/test_simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_simplify.py (original) +++ pypy/trunk/src/pypy/translator/test/test_simplify.py Sat Oct 4 17:52:25 2003 @@ -6,7 +6,7 @@ from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring from pypy.translator.simplify import eliminate_empty_blocks -make_dot = 1 +make_dot = 0 if make_dot: from pypy.translator.test.make_dot import make_dot Modified: pypy/trunk/src/pypy/translator/test/test_sourcegen.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_sourcegen.py (original) +++ pypy/trunk/src/pypy/translator/test/test_sourcegen.py Sat Oct 4 17:52:25 2003 @@ -9,7 +9,7 @@ from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring #from pypy.translator.test.make_dot import make_ps -class TestCase(test.IntTestCase): +class SourceGenTestCase(test.IntTestCase): def test_simple_func(self): """ one test source: Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Sat Oct 4 17:52:25 2003 @@ -6,14 +6,14 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = 1 +make_dot = 0 if make_dot: from pypy.translator.test.make_dot import make_dot else: def make_dot(*args): pass -class TestCase(test.IntTestCase): +class TypedPyrexTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') From hpk at codespeak.net Sat Oct 4 17:57:20 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 4 Oct 2003 17:57:20 +0200 (MEST) Subject: [pypy-svn] rev 1580 - pypy/trunk/src/pypy/translator Message-ID: <20031004155720.C515D5A2A9@thoth.codespeak.net> Author: hpk Date: Sat Oct 4 17:57:20 2003 New Revision: 1580 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: more fixes to the test-suite. one compile problem remaining ... Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 17:57:20 2003 @@ -2,8 +2,6 @@ generate Pyrex files from the flowmodel. """ -import autopath -from pypy.tool import test from pypy.interpreter.baseobjspace import ObjSpace from pypy.translator.flowmodel import * from pypy.translator.annotation import Annotator, set_type, get_type From hpk at codespeak.net Sat Oct 4 18:21:53 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 4 Oct 2003 18:21:53 +0200 (MEST) Subject: [pypy-svn] rev 1581 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031004162153.4EDB55A2A9@thoth.codespeak.net> Author: hpk Date: Sat Oct 4 18:21:52 2003 New Revision: 1581 Modified: pypy/trunk/src/pypy/translator/flowmodel.py pypy/trunk/src/pypy/translator/test/buildpyxmodule.py pypy/trunk/src/pypy/translator/test/test_sourcegen.py Log: got rid of some miscontrsucted testcase. now finally hopefully eventually all tests should pass (run python test_all.py on the pypy-root) Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Sat Oct 4 18:21:52 2003 @@ -135,7 +135,7 @@ def mkentrymap(self): """Create a map from nodes in the graph to back edge lists""" - entrymap = { self.startblock: []} + entrymap = { self.startblock: [self]} for node in self.flatten(): for edge in node.getedges(): entrymap.setdefault(edge, []).append(node) Modified: pypy/trunk/src/pypy/translator/test/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Sat Oct 4 18:21:52 2003 @@ -9,6 +9,9 @@ def make_module_from_pyxstring(name, dirpath, string): pyxfile = dirpath.join('%s.pyx' % name) + i = 0 + while pyxfile.exists(): + pyxfile = pyxfile.newbasename('%s%d.pyx' % (name, i)) pyxfile.write(string) if debug: print "made pyxfile", pyxfile make_c_from_pyxfile(pyxfile) @@ -42,6 +45,7 @@ cmdclass = {'build_ext': build_ext}, script_name = 'setup.py', script_args = ['-q', 'build_ext', '--inplace'] + #script_args = ['build_ext', '--inplace'] ) # XXX not a nice way to import a module if debug: print "inserting path to sys.path", dirpath Modified: pypy/trunk/src/pypy/translator/test/test_sourcegen.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_sourcegen.py (original) +++ pypy/trunk/src/pypy/translator/test/test_sourcegen.py Sat Oct 4 18:21:52 2003 @@ -56,42 +56,6 @@ self.assertEquals(mod.f(-1, 42), 42) self.assertEquals(mod.f(3, 5), 3) - def test_while(self): - """ - one test source: - def f(i): - while i > 0: - i = i - 1 - return i - """ - i = Variable("i") - conditionres = Variable("conditionres") - conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) - decop = SpaceOperation("add", [i, Constant(-1)], i) - - conditionbranch = ConditionalBranch() - headerbranch = Branch() - whileblock = BasicBlock([i], [i], [decop], headerbranch) - whilebranch = Branch([i], whileblock) - endbranch = EndBranch(i) - conditionbranch.set(conditionres, whilebranch, endbranch) - - headerblock = BasicBlock([i], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i], headerblock) - - startblock = BasicBlock([i], [i], - [], headerbranch) - - fun = FunctionGraph(startblock, "f") - #make_ps(fun) - - result = GenPyrex(fun).emitcode() - mod = make_module_from_pyxstring('test_source3', udir, result) - self.assertEquals(mod.f(42), 0) - self.assertEquals(mod.f(-3), -3) - def test_while_sum(self): """ one test source: From arigo at codespeak.net Sat Oct 4 18:26:55 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 4 Oct 2003 18:26:55 +0200 (MEST) Subject: [pypy-svn] rev 1582 - pypy/trunk/src/pypy/translator Message-ID: <20031004162655.B96EC5A5C8@thoth.codespeak.net> Author: arigo Date: Sat Oct 4 18:26:55 2003 New Revision: 1582 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: Don't use the 'x.y' syntax in Pyrex if 'y' is not a valid Python identifier Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 4 18:26:55 2003 @@ -34,6 +34,15 @@ method = getattr(self, "op_%s" % operator, self.generic_op) return method() + def ispythonident(self, s): + if s[0] not in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_": + return False + for c in s[1:]: + if (c not in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" + "0123456789"): + return False + return True + def generic_op(self): """Generic handler for all operators, which I don't handle explicitly""" @@ -83,7 +92,7 @@ def op_getattr(self): args = self.argnames attr = self.op.args[1] - if isinstance(attr, Constant): ###don't we have only the strings here? + if isinstance(attr, Constant) and self.ispythonident(attr.value): return "%s = %s.%s" % (self.resultname, args[0], attr.value) else: return "%s = getattr(%s)" % (self.resultname, ", ".join(args)) From tomek at codespeak.net Sat Oct 4 18:27:47 2003 From: tomek at codespeak.net (tomek at codespeak.net) Date: Sat, 4 Oct 2003 18:27:47 +0200 (MEST) Subject: [pypy-svn] rev 1583 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031004162747.E7B265A5C8@thoth.codespeak.net> Author: tomek Date: Sat Oct 4 18:27:47 2003 New Revision: 1583 Modified: pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: simplify.py has now two new functions: simplify_graph, which applies all existing transformations, and body of eliminate_fun_params_renaming, which will eliminate the renaming of function parameters. Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Sat Oct 4 18:27:47 2003 @@ -9,6 +9,10 @@ from pypy.translator.genpyrex import GenPyrex +def eliminate_fun_params_renaming(graph): + """We allways rename the params - at the first branch, which isn't really necessary""" + return graph + def eliminate_empty_blocks(graph): """simplify_vars() Things we know we can remove: @@ -45,6 +49,8 @@ i = node.input_args.index(var) nextbranch.returnvalue = prevbranch.args[i] prevprevnode[0].replace_branch(prevbranch, nextbranch) + elif isinstance(nextbranch, ConditionalBranch): + continue else: # renaming ... (figure it out yourself :-) if len(prevbranch.args) > len(nextbranch.args): @@ -58,3 +64,11 @@ break return graph + + +def simplify_graph(graph): + """apply all the existing optimisations to the graph""" + graph = eliminate_empty_blocks(graph) + graph = eliminate_fun_params_renaming(graph) + return graph + Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 4 18:27:47 2003 @@ -25,8 +25,8 @@ pass name = func.func_name funcgraph = self.space.build_flow(func) - from pypy.translator.simplify import eliminate_empty_blocks - #eliminate_empty_blocks(funcgraph) + from pypy.translator.simplify import simplify_graph + simplify_graph(funcgraph) funcgraph.source = inspect.getsource(func) result = GenPyrex(funcgraph).emitcode() make_dot(funcgraph, udir, 'ps') @@ -84,6 +84,31 @@ poor_man_range = self.make_cfunc(self.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) + #____________________________________________________ + + def simple_id(x): + return x + + def test_simple_id(self): + #we just want to see, if renaming of parameter works correctly + #if the first branch is the end branch + simple_id = self.make_cfunc(self.simple_id) + self.assertEquals(simple_id(9), 9) + + #____________________________________________________ + + def branch_id(cond, a, b): + while 1: + if cond: + return a + else: + return b + + def test_branch_id(self): + branch_id = self.make_cfunc(self.branch_id) + self.assertEquals(branch_id(1, 2, 3), 2) + self.assertEquals(branch_id(0, 2, 3), 3) + #____________________________________________________ def attrs(): From arigo at codespeak.net Sat Oct 4 19:07:58 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 4 Oct 2003 19:07:58 +0200 (MEST) Subject: [pypy-svn] rev 1584 - pypy/trunk/src/pypy Message-ID: <20031004170758.892805A5C8@thoth.codespeak.net> Author: arigo Date: Sat Oct 4 19:07:58 2003 New Revision: 1584 Added: pypy/trunk/src/pypy/TODO Log: A to-do list Added: pypy/trunk/src/pypy/TODO ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/TODO Sat Oct 4 19:07:58 2003 @@ -0,0 +1,27 @@ +Task: fix interpreter-level object introspection from app-level + (make dis.dis(dis.dis) goal work as a side effect) + +Task: provide an importer that can include packages (we can't at the + moment) + +Task: complete builtins! (like e.g. 'dir') + +Task: slicing with assigments & more small things (finish review) + + lst[::-2] = lst2 + +Task: try tests of CPython in PyPy + +Task: generate a nice dot-graph from the structure of PyPy + +Task: trash the standard unittest framework + +Task: complete the list of operations in type inference (annotation.py) + +Task: (documentation) remove/retire all web-pages referencing e.g. + AnnSpace or other deprecated stuff + +Task: (documentation) do more and enhance + + + From arigo at codespeak.net Sat Oct 4 20:14:30 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 4 Oct 2003 20:14:30 +0200 (MEST) Subject: [pypy-svn] rev 1585 - pypy/trunk/src/pypy/translator Message-ID: <20031004181430.CE8E55A5C8@thoth.codespeak.net> Author: arigo Date: Sat Oct 4 20:14:30 2003 New Revision: 1585 Added: pypy/trunk/src/pypy/translator/flowmodel.idea Log: Plan for refactoring the classes in flowmodel.py Added: pypy/trunk/src/pypy/translator/flowmodel.idea ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/flowmodel.idea Sat Oct 4 20:14:30 2003 @@ -0,0 +1,35 @@ +discussion from 4th of october 2003 + +class FunctionGraph: + startblock + returnblock + name + +class Link: + exitcase + args + target + +class Block: + input_args + operations + exitswitch # variable + exits + +class ReturnBlock: + input_args # a single variable + operations = None + exits = () + +class Variable: + name + +class Const: + value + +class SpaceOperation: + opname + args # list of variable or Constant (can be mixed) + result # either Variable or Constant instance + + From jum at codespeak.net Sun Oct 5 16:46:11 2003 From: jum at codespeak.net (jum at codespeak.net) Date: Sun, 5 Oct 2003 16:46:11 +0200 (MEST) Subject: [pypy-svn] rev 1587 - pypy/trunk/doc/devel Message-ID: <20031005144611.2BEB25C519@thoth.codespeak.net> Author: jum Date: Sun Oct 5 16:46:10 2003 New Revision: 1587 Modified: pypy/trunk/doc/devel/howtosvn.txt Log: Updated to the newest available versions. Modified: pypy/trunk/doc/devel/howtosvn.txt ============================================================================== --- pypy/trunk/doc/devel/howtosvn.txt (original) +++ pypy/trunk/doc/devel/howtosvn.txt Sun Oct 5 16:46:10 2003 @@ -110,13 +110,13 @@ -------------------------------------------------------------------------------- -.. _commandline: http://codespeak.net/~jum/svn-0.29.0-setup.exe +.. _commandline: http://codespeak.net/~jum/svn-0.30.0-setup.exe .. _website: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B259403 -.. _GUI: http://codespeak.net/~jum/TortoiseSVN-0.18-UNICODE.msi +.. _GUI: http://codespeak.net/~jum/TortoiseSVN-0.19-UNICODE.msi .. _Win: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4B6140F9-2D36-4977-8FA1-6F8A0F5DCA8F -.. _MacOS: http://codespeak.net/~jum/svn-0.29.0-darwin-ppc.tar.gz +.. _MacOS: http://codespeak.net/~jum/svn-0.30.0-darwin-ppc.tar.gz .. _iconv: http://codespeak.net/~jum/iconv-darwin-ppc.tar.gz -.. _tarball: http://codespeak.net/~jum/subversion-0.29.0.tar.gz +.. _tarball: http://codespeak.net/~jum/subversion-0.30.0.tar.gz .. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 .. _archives: http://codespeak.net/pipermail/pypy-svn/ From hpk at codespeak.net Sun Oct 5 17:35:01 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 5 Oct 2003 17:35:01 +0200 (MEST) Subject: [pypy-svn] rev 1589 - in pypy/trunk/src/pypy: . objspace/flow tool translator/test Message-ID: <20031005153501.97B9E5A0DB@thoth.codespeak.net> Author: hpk Date: Sun Oct 5 17:35:00 2003 New Revision: 1589 Modified: pypy/trunk/src/pypy/TODO pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/tool/udir.py pypy/trunk/src/pypy/translator/test/buildpyxmodule.py pypy/trunk/src/pypy/translator/test/make_dot.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: - added a few tasks - fixed usage of 'udir' and moved a more general version into the vpath package Modified: pypy/trunk/src/pypy/TODO ============================================================================== --- pypy/trunk/src/pypy/TODO (original) +++ pypy/trunk/src/pypy/TODO Sun Oct 5 17:35:00 2003 @@ -1,3 +1,5 @@ +Task: update pypy homepage + Task: fix interpreter-level object introspection from app-level (make dis.dis(dis.dis) goal work as a side effect) @@ -6,7 +8,7 @@ Task: complete builtins! (like e.g. 'dir') -Task: slicing with assigments & more small things (finish review) +Task: slicing with assigments & more small things (finish StdObjSpace review!) lst[::-2] = lst2 @@ -14,7 +16,8 @@ Task: generate a nice dot-graph from the structure of PyPy -Task: trash the standard unittest framework + +Task: trash the standard unittest framework/enhance it Task: complete the list of operations in type inference (annotation.py) @@ -24,4 +27,3 @@ Task: (documentation) do more and enhance - Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sun Oct 5 17:35:00 2003 @@ -47,7 +47,7 @@ def reraise(self): etype, evalue, etb = sys.exc_info() - print >> sys.stderr, '*** reraise', etype, evalue + #print >> sys.stderr, '*** reraise', etype, evalue raise OperationError, OperationError(self.wrap(etype), self.wrap(evalue)), etb def build_flow(self, func): Modified: pypy/trunk/src/pypy/tool/udir.py ============================================================================== --- pypy/trunk/src/pypy/tool/udir.py (original) +++ pypy/trunk/src/pypy/tool/udir.py Sun Oct 5 17:35:00 2003 @@ -1,41 +1,6 @@ import autopath -#__________________________________________________________ -# udir (a unique human-readable directory path where unittests can store -# files to their likening) +from vpath.local import make_numbered_dir -def make_udir(): - from vpath.local import Path, mkdtemp +udir = make_numbered_dir(base='usession-', keep=3) - _newtmpdir = mkdtemp() - _tmpdir = _newtmpdir.dirname() - _newtmpdir.rmdir() - - name, num = 'usession', 0 - items = [] - for item in _tmpdir.listdir(): - if item.basename().startswith(name): - xb = item.basename().split('-') - try: - name, num = xb[0], int(xb[1]) - items.append((name, num)) - except (TypeError,ValueError): - continue - - if items: - items.sort() - name, num = items[-1] - num += 1 - - udir = _tmpdir.join('-'.join([name, str(num)])) - udir.mkdir() - return udir - -udir = make_udir() - -#__________________________________________________________ - - -if __name__ == '__main__': - # test all of pypy - print udir Modified: pypy/trunk/src/pypy/translator/test/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Sun Oct 5 17:35:00 2003 @@ -71,4 +71,4 @@ raise ValueError, "failure %s" % result except PyrexError, e: print >>sys.stderr, e - cfile = pyxfile.newsuffix('.c') + cfile = pyxfile.newext('.c') Modified: pypy/trunk/src/pypy/translator/test/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/test/make_dot.py Sun Oct 5 17:35:00 2003 @@ -195,7 +195,7 @@ from vpath.adapter.process import exec_cmd dest = udir.join('%s.dot' % name) dest.write(dotgen.get_source(fun)) - psdest = dest.newsuffix(target) + psdest = dest.newext(target) out = exec_cmd('dot -T%s %s' % (target, str(dest))) psdest.write(out) print "wrote", psdest Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sun Oct 5 17:35:00 2003 @@ -5,7 +5,7 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = 0 +make_dot = 1 if make_dot: from pypy.translator.test.make_dot import make_dot From lac at codespeak.net Mon Oct 6 00:14:50 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 00:14:50 +0200 (MEST) Subject: [pypy-svn] rev 1590 - pypy/trunk/doc/funding Message-ID: <20031005221450.510B25A0DB@thoth.codespeak.net> Author: lac Date: Mon Oct 6 00:14:48 2003 New Revision: 1590 Added: pypy/trunk/doc/funding/sample.cv Log: These are what the 10 lines of cvs should look like. Actually, these people are briefer than 10 lines. But that is what we are allowed. Added: pypy/trunk/doc/funding/sample.cv ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/sample.cv Mon Oct 6 00:14:48 2003 @@ -0,0 +1,14 @@ +Laura Creighton (2003-09-24): + +> There is an 'in English' button, but the information is incomplete. + +You are right. Shame there is nothing about the open source stuff in +English. + +Here is an FP6 STREP proposal that is currently in the final negotiation +phase, that is to say that only a major catastrophe could stop the final +contract from being signed. It is not a public document. + +--- Alastair + + From lac at codespeak.net Mon Oct 6 00:39:00 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 00:39:00 +0200 (MEST) Subject: [pypy-svn] rev 1591 - pypy/trunk/doc/funding Message-ID: <20031005223900.925415A0DB@thoth.codespeak.net> Author: lac Date: Mon Oct 6 00:38:59 2003 New Revision: 1591 Removed: pypy/trunk/doc/funding/sample.cv Log: wrong file. sorry. Deleted: /pypy/trunk/doc/funding/sample.cv ============================================================================== --- /pypy/trunk/doc/funding/sample.cv Mon Oct 6 00:38:59 2003 +++ (empty file) @@ -1,14 +0,0 @@ -Laura Creighton (2003-09-24): - -> There is an 'in English' button, but the information is incomplete. - -You are right. Shame there is nothing about the open source stuff in -English. - -Here is an FP6 STREP proposal that is currently in the final negotiation -phase, that is to say that only a major catastrophe could stop the final -contract from being signed. It is not a public document. - ---- Alastair - - From lac at codespeak.net Mon Oct 6 00:41:07 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 00:41:07 +0200 (MEST) Subject: [pypy-svn] rev 1592 - pypy/trunk/doc/funding Message-ID: <20031005224107.64FD75A0DB@thoth.codespeak.net> Author: lac Date: Mon Oct 6 00:41:06 2003 New Revision: 1592 Added: pypy/trunk/doc/funding/sample.cv Log: The real file of sample cvs Added: pypy/trunk/doc/funding/sample.cv ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/sample.cv Mon Oct 6 00:41:06 2003 @@ -0,0 +1,156 @@ +2.1 Key Personnel + +Herwig Rehatschek, Ph.D., M.Sc. + +Herwig Rehatschek was born in 1969 in Graz. After finishing +high-school he started to study Telematics in 1987. He received his +M.Sc. in 1993 from the University of Technology, Graz. After about one +year working in industry designing and implementing industrial control +systems he started with his Ph.D. thesis and received his Ph.D. in +technical sciences in 1997 from the University of Technology, +Graz. Since then he is working at the non-profit research company +JOANNEUM RESEARCH with a main emphasis on digital media and digital +asset management systems. Since then he participated in many +international projects and also managed and co-ordinated some of them. + +Helmut Neuschmied, Ph.D., M.Sc. + +Born on 9 November 1967 in Tirol/Austria. Study of Telematik +(information technology) at the University of Technology in Graz and +1995 ? 1996 PhD study at the institute for Computer Graphics and +Vision at the University of Technology in Graz and at the company AVL +List GmbH. PhD thesis: "Analysis of endoscopic images of cyclical +combustion processes in engines". Since 1998 Research engineer at the +Institute of Information Systems & Information Management at JRS. + +Peter Schallauer, M.Sc. + +Born on 26th July 1969 in Sierning/Austria. Study of "Telematik" +(information technology), branch "Image Analysis" at the Graz +University of Technology. Diploma thesis on the topic "Digital Image +Sequence Restoration" (in English) at the Institute of Computer +Graphics and Vision (Graz University of Technology) and JRS in +Graz. Degree of "Diplom-Ingenieur" (equivalent to M.Sc.). Since 1995 +Research engineer at JRS, at the Institute of Information Systems & +Information Management. Main fields of activity: Research and +development of a semi-automatical digital film restoration system, +Project co-ordination for managing the ESPRIT project FRAME (Parallel +software development for SCI-clustered PC's). + + +Walter Plaschzug born in 1966, studied TELEMATIK at the Technical +University in Graz from 1985 to 1990; work on communication products +as a technical product manager with Digital Data Systems - Vienna, +followed by integration of automatic storage systems; in 1995 start at +Joanneum Research ? Graz, as project co-ordinator for digital +multimedia activities (e.g: digital restoration); successful in +managing the Esprit project 24220 FRAME as project co- ordinator; +since 1998 managing director of HSA in Graz responsible for all +activities in the domain of "archives going digital"; Responsible for +successful market introduction of the digital film restoration +software "DIAMANT", the media monitoring software "Commercial Monitor" +and the brand detection tool "Brand Detector". + +Louis Gay + +Louis Gay founded DATOPS in 1995 and has served as first President and +CEO since inception. Prior to founding DATOPS, Louis was a captain in +the French Navy where he has served as a pilot Squadron Commander on +board French Navy Aircraft Carriers. After leaving the Navy he has +been acting as Business Development Vice President in a start up +company specialized in simulation sofware, just before founding +DATOPS. + +Dr Olivier Massiot + +Olivier Massiot has joined DATOPS after a Professor and Searcher in +N?mes ERIEE University, in the South of France. He is Phd in +Artificial Intelligence and presently Chief Technical Officer of +DATOPS. + +Marco Boero. Born in 1955 in Genoa, M. Sc. with a degree in +Informatics and Electronic Engineering from the University of Genoa, +Dep. of Computer, Telecommunication and Systems Science. His +background includes computer, simulation and automation systems for +the industry in various areas, including applications for +manufacturing systems, transportation, training, resources and risk +management. He is experienced in advanced information technology and +modelling methods, including Artificial Intelligence and Knowledge +Based Systems, simulation, Cooperative Working and Decision Support +Systems. He is author of more than fifty international papers. He has +more than ten year experience in the field of RTD projects both at the +national and European level. + +Enrico Morten. Born in 1953 in Bozen, Italy, M. Sc. with a degree in +Informatics and Electronic Engineering from the University of +Genoa. He has been working for several major electronic companies in +Italy such as Ansaldo and Esaote. Since 1982, he has been working in +R&D departments, where he was involved in the development of several +industrial research projects in different areas. + +Pierpaolo Borgato: Born in 1963 in Rovigo,he graduated in Electronic +Engineering at the University of Padova, Dep. of Informatics. In 1990 +he graduated with an MBA at CUOA (Centro Universitario di +Organizzazione Aziendale) in Altavilla, Vicenza. After experiencing in +software analysis, testing and client management, he has been IT +Manager in a medium size Italian company belonging to the Belgium +group Arbed. He is now Production and Systems Director in Nielsen +Media Research Italy. + +Antonio Miraglia: born on 24th April 1964 in Terranova di Pollino +(PZ)/Italy. After finishing technical school received a degree in +Computer Science at Milan University in 1989. He made his thesis in +Olivetti: "Emulating Unix Virtual Memory on the Mach operating system +of Carnegie Mellon University". He joined ACNielsen since 1990 in the +Media Deveolpment Department. Since 1995 he was responsible of Media +Sw development team. He had many experiences on coordination of +international project. He was also involved in the implementation of +project for automatic advertising recognition for TV and radio. + + 4.7 DEUTSCHES + FORSCHUNGSZENTRUM F?R K?NSTLICHE INTELLIGENZ + +The German Research Centre for Artificial Intelligence (DFKI) GmbH is +a non-profit research company founded in 1988 by German IT companies +and is the leading German research institute in the field of +innovative software technology. DFKI has more than 192 full-time +employees, including 145 research scientists with advanced degrees. In +addition, there are around 170 part-time research assistants. DFKI is +focusing on the complete cycle of innovation - from world-class basic +research and technology development through leading-edge demonstrators +and prototypes to product functions and commercialization. Based in +Kaiserslautern and Saarbr?cken, the DFKI ranks among the important +Centres of Excellence worldwide. + +DFKI's five research departments are directed by internationally +recognized research scientists, furthermore, since 2002 the Institute +for Information Systems (IWi) (Director: Prof. August-Wilhelm Scheer) +is part of the DFKI. The mission of the three Transfer Centers is to +transfer DFKI's research results to commercial application. + +There are currently three Competence Centers, that bundle know-how, +skills, and technologies of DFKI to tackle important questions in +e-Learning, Language Technology and Semantic Web. + +The Multiagent Systems Group, under Prof. J.H. Siekmann, was +established in 1991. It has carried out fundamental research in the +field of Distributed Artificial Intelligence and has applied the +resulting ideas to many areas including transportation, finance, +enterprise resource planning, electronic commerce and the control of +synthetic characters in virtual worlds. + + 4.7.1 Key + Personnel + +Alastair Burt + +Alastair Burt is a researcher at the German Research Centre for +Artificial Intelligence (DFKI). He studied Psychology at the +University of Stirling, Scotland and Computing at Imperal College +London. In 1990 he joined the Multiagent System Research Group at +DFKI GmbH in Saarbr?cken in the department of Deduction and Multiagent +Systems headed by Prof. H. J. Siekmann. Since then he has has been +involved with wide variety of research projects centred around the +application of multi agent systems, including participation in several +EU projects and taking responsibility for their coordination. + From lac at codespeak.net Mon Oct 6 06:18:54 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 06:18:54 +0200 (MEST) Subject: [pypy-svn] rev 1593 - pypy/trunk/doc/funding Message-ID: <20031006041854.959415A101@thoth.codespeak.net> Author: lac Date: Mon Oct 6 06:18:53 2003 New Revision: 1593 Added: pypy/trunk/doc/funding/our_call.txt Log: Add this one, so we can more easily show people what we are doing. Added: pypy/trunk/doc/funding/our_call.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/our_call.txt Mon Oct 6 06:18:53 2003 @@ -0,0 +1,19 @@ +IST-2002-2.3.2.3 - Open development platforms for software and services + +Objective: To build open development and run-time environments for software and services providing the next generation of methodologies, interoperable middleware and tools to support developers - through all phases of the software life-cycle, from requirements analysis until deployment and maintenance - in the production of networked and distributed software systems and services, embedded software and value-added user services. This will enable the development of future software engineering methods and tools. + +Focus is on: + +? High level methods and concepts (esp. at requirements and architectural level) for system design, development and integration, addressing non-functional aspects, complexity, autonomy and composability. + +? Open and modular development environments, enabling flexibility and extensibility with new or sector-specific tools (e.g. intelligent distributed decision support), supporting different adaptable development processes and methodologies and ensuring consistency and traceability across the development lifecycle. + +? Light/agile methodologies and adaptive workflow providing a dynamic and adaptive environment, suitable for co-operative and distributed development. + +? Open platforms, middleware and languages supporting standards for interoperability, composability and integration. (incl. e.g. P2P, GRID, autonomy, agents, dynamic adaptability and evolvability, context awareness, customer profiles). Open source middleware layers can facilitate rapid and broad adoption. + +Priority will be given to projects in which strong industrial users join forces with software and service suppliers in building common platforms with support of academic research partners. + +In addition, related foundational research, to be implemented by Specific Targeted Research Projects and Coordination Actions, should focus on fundamental design concepts, systematisation of domain specifications, concurrency, distribution and timing, formal and quantitative analysis and testing tools, and future database and information system concepts. + +Work should where appropriate, enhance and complement work implemented under EUREKA/ITEA and in software initiatives at member and associated state level. The IST programme will seek active co-operation with ITEA in software intensive systems. From lac at codespeak.net Mon Oct 6 08:54:17 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 08:54:17 +0200 (MEST) Subject: [pypy-svn] rev 1594 - pypy/trunk/doc/funding Message-ID: <20031006065417.75DDC5A101@thoth.codespeak.net> Author: lac Date: Mon Oct 6 08:54:16 2003 New Revision: 1594 Added: pypy/trunk/doc/funding/abstract.txt Log: We have 2000 chars to give them an abstract. I did this in 1861. Check and see if this is what you want us to say. Added: pypy/trunk/doc/funding/abstract.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/abstract.txt Mon Oct 6 08:54:16 2003 @@ -0,0 +1,33 @@ + This proposal directly addresses the Strategic Objective + IST-2002-2.3.2.3 - 'Open development platforms for software and + services' of the Second Call of the Information Society + Technologies Workprogramme. + + The PyPy project will build a flexible, modular, context-aware, + self-hosting Just-In-Time (JIT) specialising compiler for Python. + Python is a portable, interpreted, object-oriented, Free/Open + Source Very-High Level Language (VHLL). The most recent version + of the language is Python 2.3.1, released under the Python + Software Foundation License, approved by both the Open Source + Initiative, and the Free Software Foundation. + + Creating a new vesion will take advantage of the known European + strengths in formal methods and languages (Python was first + developed in 1990 at CWI, Centrum voor Wiskunde en Informatica, + in the Netherlands.) It will go beyond the state of the Art in + computer languages, and produce a runtime system which is much + better suited for the development and deployment of networked, + embedded, and mobile devices. + + Considerable effort will be made to disseminate this knowledge, + among academics, SMEs, Industrial users, and through our Open + website and mailing lists, any interested person. This will + ensure that the project will be fully exploited upon completion. + + As foundational applied research, focusing on fundamental design + concepts, there will be significant indirect effects wherever the + Python programming langauge is taught or deployed. Python is + widely used as a 'first programming language' and has been very + successful among non-programmers, particularily women. The + success of Python can therefore have a limited effect in + promoting social cohesion and gender equality. From lac at codespeak.net Mon Oct 6 16:33:51 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 16:33:51 +0200 (MEST) Subject: [pypy-svn] rev 1595 - pypy/trunk/doc/funding Message-ID: <20031006143351.92A1F5A106@thoth.codespeak.net> Author: lac Date: Mon Oct 6 16:33:50 2003 New Revision: 1595 Added: pypy/trunk/doc/funding/B4.3_participants.txt pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B4.5_resources.txt pypy/trunk/doc/funding/B4.6_finance.txt pypy/trunk/doc/funding/B4.7_effort_form.txt Modified: pypy/trunk/doc/funding/B4.0_resources.txt pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B4.2_other_countries.txt Log: Break out section 4, so Holger has a place to do a little work Modified: pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.txt (original) +++ pypy/trunk/doc/funding/B4.0_resources.txt Mon Oct 6 16:33:50 2003 @@ -21,7 +21,7 @@ The consortium and project resources ===================================== -FIXME_NICO FIXME_LAURA check below information +FIXME_NICO FIXME_LAURA FIXME_HOLGER check below information **DFKI** @@ -36,7 +36,7 @@ Role: Project Management & Technical Partner Country: Sweden - Contact: Jacob Hallen + Contact: Jacob Hall?n Skills, Commitment, Resources: @@ -54,7 +54,7 @@ Role: Technical Partner Country: Europe - Contact: Laura Creighton (?) + Contact: Holger Krekel Skills, Commitment, Resources: Modified: pypy/trunk/doc/funding/B4.1_subcontracting.txt ============================================================================== --- pypy/trunk/doc/funding/B4.1_subcontracting.txt (original) +++ pypy/trunk/doc/funding/B4.1_subcontracting.txt Mon Oct 6 16:33:50 2003 @@ -12,6 +12,7 @@ :DELETE:END +FIXME_LAURA yes, I have to write this. Get figures from KPMG Sub-contracting ================= @@ -21,18 +22,3 @@ see that we will have any need for sub-contracting. Possibly to get final stamps of approval on the books from KPMG our accounting firm. This is the sort of thing that AB Strakt does all the time. - -ASK_STOCKHOLM Do I have to discuss this? - -:DELETE:BEGIN - - FIXME - should we mention that other people out of the project - are likely to contribute patches for specific parts, - as is always the case in this kind of open source project? - maybe these contribution would not be significant to the - primary WP goals. - -nico: no need to mention this in the sub-contracting section - -:DELETE:END \ No newline at end of file Modified: pypy/trunk/doc/funding/B4.2_other_countries.txt ============================================================================== --- pypy/trunk/doc/funding/B4.2_other_countries.txt (original) +++ pypy/trunk/doc/funding/B4.2_other_countries.txt Mon Oct 6 16:33:50 2003 @@ -1,4 +1,5 @@ -FIXME_LAURA +FIXME_LAURA -- discuss role of PBF in mitigating Samuele's and Tim's +problem? phone call to Belgium to ask this happening. :DELETE:BEGIN @@ -16,19 +17,3 @@ Other countries ================= -ASK_STOCKHOLM - -Samuele Pedroni is Swiss. [*]_ But he says that he will move to do this -full time. What is the Status of Israel? Is a participant a -physical person, or a company? Does it matter where members sleep -at night? Could we just allocate funds to AB Strakt, say, and then -have Strakt go hire Samuele, letting him live and physically work -wherever he likes? What about Tim Peters, or some other American -we might want to invite? Is this sort of thing possible or -would Tim have to move? If Samuele is moving, can we get the -Marie Curie funds to pay for it? - -.. [*] Armin Rigo is Swiss too. Switzerland and the EU have general - agreement for education and research programs. Do they cover this case? - - FIXME: what about Guido? Added: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.3_participants.txt Mon Oct 6 16:33:50 2003 @@ -0,0 +1,18 @@ +FIXME EVERYBODY -- CVs +FIXME JACOB +FIXME LAURA MAKE SURE THIS GETS DONE +B.4.3 Description of the participants + +Short description of the participating organisations including: + +? The expertise and experience of the organisation, + +? Short CVs of the key persons to be involved indicating relevant + experience, expertise and involvement in other EC projects. (Each + CV no more than 10 lines) Remember that you cannot contractually + commit to these specific persons being assigned so you should state + that these named people or their equivalent will be assigned + +The CV of the nominated Project Manager is of particular importance. +You have to show that he has experience of successful international +project management. Emphasise this aspect. Added: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Mon Oct 6 16:33:50 2003 @@ -0,0 +1,13 @@ +B.4.4 Quality of partnership, involvement of users and SMEs + +Show that the organisations involved in the consortium are capable of +doing the tasks allotted to them. Ensure there is no unnecessary +redundancy and duplication in the make-up of the consortium. Ensure +the consortium does not lack an obvious participant with some +essential skill or resource. + +Describe how involvement of SMEs has been addressed. + +FIXME HOLGER FIXME LAURA FIXME JACOB FIXME NICO +Here we discuss the PBF in gory detail, how you make a Sig, and +how this is an SME-driven project. Strakt and Logilab are SMEs too. \ No newline at end of file Added: pypy/trunk/doc/funding/B4.5_resources.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.5_resources.txt Mon Oct 6 16:33:50 2003 @@ -0,0 +1,6 @@ +B.4.5 Resources to be deployed + +Show how the project will mobilise the critical mass of resources +(personnel, equipment, finance...) necessary for success. + +FIXME HOLGER: Here is where we need to say one thing about Sprints Added: pypy/trunk/doc/funding/B4.6_finance.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.6_finance.txt Mon Oct 6 16:33:50 2003 @@ -0,0 +1,4 @@ +B.4.6 Overall Financial Plan + +Show that the overall financial plan for the project is adequate. +FIXME_LAURA Added: pypy/trunk/doc/funding/B4.7_effort_form.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.7_effort_form.txt Mon Oct 6 16:33:50 2003 @@ -0,0 +1,49 @@ +FIXME_NICO (get from Gantt?) + +In B4.7 (below) do not identify any activities as "demonstration" +i.e. leave that section blank. + +B.4.7 STREP Project Effort Form + +Full duration of project (insert person-months for activities in which +partners are involved) + +Project acronym - + + + Short Names + Partner 1 + Partner 2 + Partner 3 + Partner 4 + Partner 5 + etc + TOTAL PARTNERS + + + WP name + WP name + WP name + etc + Total research/innovation + + + + Demonstration activities + WP name + WP name + WP name + etc + Total demonstration + + + + Consortium management activities + WP name + WP name + WP name + etc + Total management + + + TOTAL ACTIVITIES From lac at codespeak.net Mon Oct 6 16:36:05 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 16:36:05 +0200 (MEST) Subject: [pypy-svn] rev 1596 - pypy/trunk/doc/funding Message-ID: <20031006143605.D71335A106@thoth.codespeak.net> Author: lac Date: Mon Oct 6 16:36:05 2003 New Revision: 1596 Modified: pypy/trunk/doc/funding/B4.0_resources.txt Log: Fix spelling of Holger's name Modified: pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.txt (original) +++ pypy/trunk/doc/funding/B4.0_resources.txt Mon Oct 6 16:36:05 2003 @@ -68,7 +68,7 @@ applying new techniques to solve industrial clients' problems. XXXFIXME -Infrae(?) Dutch Holger Kregel +Infrae(?) Dutch Holger Krekel interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, anna ravenscroft, gunter janton, samuele pedroni From lac at codespeak.net Mon Oct 6 16:58:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Mon, 6 Oct 2003 16:58:44 +0200 (MEST) Subject: [pypy-svn] rev 1597 - pypy/trunk/doc/funding Message-ID: <20031006145844.AA2A15A106@thoth.codespeak.net> Author: lac Date: Mon Oct 6 16:58:43 2003 New Revision: 1597 Added: pypy/trunk/doc/funding/B5.1_project_manager.txt pypy/trunk/doc/funding/B5.2_management_structure.txt pypy/trunk/doc/funding/B5.3_coordinator.txt pypy/trunk/doc/funding/B5.4_meetings.txt pypy/trunk/doc/funding/B5.5_quality.txt pypy/trunk/doc/funding/B5.6_communication.txt pypy/trunk/doc/funding/B5.7_consortium.txt pypy/trunk/doc/funding/B5.8_ip.txt Modified: pypy/trunk/doc/funding/B5.0_management.txt Log: Break out B5 into chunks. Now Holger has all the work he asked for and then some. Sprints get mentioned in B5.0, and talked a lot in B5.4 Modified: pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_management.txt (original) +++ pypy/trunk/doc/funding/B5.0_management.txt Mon Oct 6 16:58:43 2003 @@ -16,7 +16,29 @@ add text! -FIXME_LAURA FIXME_JACOB +FIXME_LAURA FIXME_JACOB FIXME_HOLGER This is the section that needs the +longest about Sprints... Also need to say that we have made a working +prototype, have worked together before, + +B.5 Project management + +Describe the organisation, management and decision making structures +of the project. Describe the plan for the management of knowledge, of +intellectual property and of other innovation-related activities +arising in the project. (Recommended length ? three pages) + +This section should describe how the proposed project will be managed, +the decision making structures to be applied, the communication flow +within the consortium and the quality assurance measures which will be +implemented, and how legal and ethical obligations will be met. + +Quality of the management + +Make it clear how progress will be monitored and how an effective +management structure will be put in place, with agreed lines of +communication and responsibility. Describe how corrective actions +will be initiated and how conflicts will be resolved. + here we need to say Added: pypy/trunk/doc/funding/B5.1_project_manager.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.1_project_manager.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,78 @@ +FIXME JACOB +B.5.1 Project Manager + +Every project must have a Project Manager. He will be responsible for +the Management of the Project and execution of the contract. He +is appointed by the Co-ordinator and chairs the Management +Meetings. He approves all outputs and reports, is the prime +external interface and also may be the Technical Director (if one +is deemed necessary). + + +There is some confusion as to the role of the Project Manager. This is +not an administrative chore. A Project Manager will require some +administrative support, but that is far from the essence of the job. +The administrative functions such as status tracking, financial +reporting, change control and project library maintenance are really a +minor part of the overall job. + +Project management activities + +Specific targeted research projects will also include an overall +management structure. Over and above the technical management of +individual work packages, an appropriate management framework linking +together all the project components and maintaining communications +with the Commission will be needed. + +Project management will include: + +? co-ordination of the technical activities of the project; + +? the overall legal, contractual, ethical, financial and administrative + management of the project; + +? preparing, updating and managing the consortium agreement between + the participants; + +? co-ordination of knowledge management and other innovation-related + activities; + +? overseeing the promotion of gender equality in the project; + +? overseeing science and society issues, related to the research + activities conducted within the project; + +? obtaining audit certificates (as and when required) by each of the + participants; + +? bank guarantees for SMEs (if applicable). + +Successful Project Management of a FrameWorkprogram Project +requires various skills and knowledge. In my view it requires a +person with the following attributes ? + + ? Good appreciation of the relevant business area + + ? Participation in a previous Framework project + + ? Knowledge of Framework procedures + + ? Good interpersonal skills + + ? Well organised and systematic in own work + + ? Good knowledge of ISO 9001 + + ? Good knowledge of English + + ? Some knowledge of project technical area + + ? Some knowledge of financial management + +Project Management is a combination of all of the above skills. Extra +strength in some areas could compensate for weakness in others. +Remember this function includes legal responsibility aspects and thus +keeping of good records is essential. Any telephone calls and +agreements, especially with the Project Officer should be minuted +and/or confirmed in writing, at least by email. + Added: pypy/trunk/doc/funding/B5.2_management_structure.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.2_management_structure.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,23 @@ +FIXME_HOLGER + +We want the 2 boards. Stick youself for PBF, Nicolas for +Logilab, Jacob for Strakt Alastair for DKFI into the Management box. + +Then make a technical board. Every package responsible person must +be in here. Tim Peters needs to be given responsibility for one thing, +also the coordinate with Cpython Workpackage. + +FIXME_NICO you do the WP changing. + + B.5.2 Management Structure + +As this type of project is essentially the same as the previous RTD +project, I would maintain the traditional structure as follows - + +(see the PDF STREP-template.pdf) + +For smaller projects and depending on the technical abilities of the +company representatives, it is sometimes possible and more effective +to combine the Management and Technical Boards although they must +continue to deal with both aspects. + Added: pypy/trunk/doc/funding/B5.3_coordinator.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.3_coordinator.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,63 @@ +FIXME Alastair +write this. +FIXME EVERYBODY +proof this + + + B.5.3 Co-ordinator + +This is the principal interface to the Commission - both during +proposal and project stages and is responsible for submitting the +proposal; also conducts the contract negotiation. During project +appoints the Project Manager, submits all reports, normally handles +the financial statements and payments, chairs the Project Management +Board and has overall control of the project. + +Note that the Coordinator normally appoints the project manager. If, +under rare circumstances it is decided to split the management into +Managerial and Technical parts, then a Technical Director is also +appointed, although he is not necessarily from the Coordinating +Organisation. + + +A distinction between Financial Coordinator and Scientific +Coordinator is no longer recognised in the contract. Any +distinctions of role between the partners must be embodied in +the Consortium Agreement. + +It is also normal for the Technical Director to chair a Technical +Board that would consist of the Key Technical staff - one per partner +normally or Work package leaders. Such meetings are normally held +adjacent to Management Board meetings. + + +The Technical Director would also sit on the Management Board ex +officio and the Project Manager on the Technical Board. + +It is normal to have a structure as shown above under B.5.2 (note the +Technical Board could be combined into the Management board). + +I am trying here to give a flavour of the type of words and content to +use. It is not exhaustive. Do not copy them verbatim. + + +A Management Board will be created that will be responsible for the +successful completion of the project and the exploition of its +result. It will be chaired by the appointed Project Manager and will +consist of a senior representative of each partner. + +Decisions regarding the project will be made by vote with each partner +having a single vote. In cases of a tie, the project manager will +have a casting vote. + + The role of the Management Board will include the following - + + ? Management of resources in order to meet schedules and goals + ? To ensure the quality management of the project + ? Tracking of costs related to budget + ? Resolution of conflicts + ? Creation of technology implementation plan and its updating + ? Ensuring compliance with legal and ethical obligations + +Explain the role/responsibilities of Technical Board if constituted +and state that it reports to the Management Board Added: pypy/trunk/doc/funding/B5.4_meetings.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.4_meetings.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,11 @@ +B.5.4 Project Meetings + +The Management Board will meet at the start of the project and (2/3/4) +times per year or on an ad hoc basis as requested. The meetings will +normally be scheduled to rotate between the principal contractors +home base. + +Add info on Technical meetings as required. + +FIXME HOLGER THIS IS WHERE YOU DISCUSS THE SPRINTS IN MOST DETAIL. +FIXME LAURA I HAVE A THING OR SO TO SAY IF HOLGER DOESN'T \ No newline at end of file Added: pypy/trunk/doc/funding/B5.5_quality.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.5_quality.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,22 @@ +FIXME HOLGER FIXME JACOB +write what we have. We don't apparantly have to have any of the rest. +We just have to say that we will have a plan that will address blah blah +B.5.5 Quality procedures + +The project manager will circulate a draft Quality Management plan +forthe project prior to first Project Meeting and and then present it +for approval at the first Meeting. + + It will contain as a minimum, procedures for - + + ? Document procedures, standards and control + ? Issue control for documents + ? Reporting procedures, frequency and format + ? Communication procedures + ? Corrective actions + ? Exception control + ? Conflict resolution + ? Meeting draft agenda + ? Format of meeting minutes + ? Tracking system for actions + ? Specific responsibilities within the project Added: pypy/trunk/doc/funding/B5.6_communication.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.6_communication.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,8 @@ +B.5.6 Communication and Reporting. + +Amplify here specific policies on this subject ie use of email or +communication via web site management page, telephones, video +conferencing, frequency etc + +FIXME HOLGER -- here we do the Open Source is all about Communication +song \ No newline at end of file Added: pypy/trunk/doc/funding/B5.7_consortium.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.7_consortium.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,8 @@ +B.5.7 Consortium Agreement + +A Consortium Agreement between the partners is now mandatory and must +be signed before any participant start work on the project. The +Project Manager must be responsible for this activity. + +FIXME LAURA -- we just have to say we will have one. Don't work on this +until after the 15th. \ No newline at end of file Added: pypy/trunk/doc/funding/B5.8_ip.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B5.8_ip.txt Mon Oct 6 16:58:43 2003 @@ -0,0 +1,18 @@ +B.5.8 Management of Knowledge and Intellectual Property + +The rules regarding the protection dissemination and use of knowledge +have been simplified and a larger flexibility is granted to the +participants: + +- rules are identical for all participants; + +- rules concentrate on the principles and provisions considered + necessary for an efficient cooperation and the appropriate use and + dissemination of the results; +- participants may define among themselves the arrangements that + fit them the best within the framework provided in the model + contract. + +See also comments under B.3.3.1 and B.3.3.2 and address here. + +FIXME_LAURA write up what IPR helpdesk told you. \ No newline at end of file From tismer at codespeak.net Mon Oct 6 18:23:26 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 6 Oct 2003 18:23:26 +0200 (MEST) Subject: [pypy-svn] rev 1598 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031006162326.D42415A106@thoth.codespeak.net> Author: tismer Date: Mon Oct 6 18:23:25 2003 New Revision: 1598 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/B1._obj_from_badB2.txt pypy/trunk/doc/funding/B4.2_other_countries.txt pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: small corrections to new files. created a new temporary doc and pdf. No time for my changes today (birthday party), will happen tomorrow! Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Mon Oct 6 18:23:25 2003 @@ -358,7 +358,7 @@ [reconciling-responsiveness-with-performance.pdf] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", -PLDI `94 and OOPSLA `94 +PLDI '94 and OOPSLA '94 http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf [psyco] Armin Rigo, http://psyco.sourceforge.net Modified: pypy/trunk/doc/funding/B1._obj_from_badB2.txt ============================================================================== --- pypy/trunk/doc/funding/B1._obj_from_badB2.txt (original) +++ pypy/trunk/doc/funding/B1._obj_from_badB2.txt Mon Oct 6 18:23:25 2003 @@ -1,9 +1,11 @@ THIS FILE IS NOT USED. ----------------------------------------------------------------------- + Laura: This is the stuff I wrote for B2. It belongs in B1, if at all. I sort of like how I made the PyPy objective match the Call objective. That might be good to clip for B1. + --------------------------------------------------------------- Modified: pypy/trunk/doc/funding/B4.2_other_countries.txt ============================================================================== --- pypy/trunk/doc/funding/B4.2_other_countries.txt (original) +++ pypy/trunk/doc/funding/B4.2_other_countries.txt Mon Oct 6 18:23:25 2003 @@ -17,3 +17,4 @@ Other countries ================= +(section cannot be empty for ReST) Modified: pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.4_workpackage_list.txt Mon Oct 6 18:23:25 2003 @@ -12,7 +12,6 @@ .. |em| replace:: End month .. |dn| replace:: Deliverable No -Note: The man months have not been inserted, yet. ===== ===================================================== ===== ==== ==== ==== ==== ======== |wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp @@ -47,4 +46,4 @@ ===== ===================================================== ===== ==== ==== ==== ==== ======== Note: constraint and aspects and type checking go into Langage Extension - semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file +semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From hpk at codespeak.net Mon Oct 6 18:24:15 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 6 Oct 2003 18:24:15 +0200 (MEST) Subject: [pypy-svn] rev 1599 - pypy/trunk/doc/funding Message-ID: <20031006162415.E8A5B5A106@thoth.codespeak.net> Author: hpk Date: Mon Oct 6 18:24:15 2003 New Revision: 1599 Modified: pypy/trunk/doc/funding/B4.5_resources.txt Log: added the paragraphs about sprint that laura requested. feel free to comment and enhance and give me further directions. Modified: pypy/trunk/doc/funding/B4.5_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.5_resources.txt (original) +++ pypy/trunk/doc/funding/B4.5_resources.txt Mon Oct 6 18:24:15 2003 @@ -3,4 +3,36 @@ Show how the project will mobilise the critical mass of resources (personnel, equipment, finance...) necessary for success. -FIXME HOLGER: Here is where we need to say one thing about Sprints +FIXME: i am only writing about sprints below (laura told me so) +but the above sentence seems to indicate that a lot of more stuff should go here. +Please feel free to enhance/modify! + + +Key to PyPy's technical development and research are so called "sprints". These publically +announced one-week meetings serve as an intense working forum to rapidly discuss +and implement key PyPy ideas with agile methodologies. Developers usually pair +up and write unit-tests to test the to-be-implemented features before actually adding +them. The unittest-first approach helps to understand the planned feature. Additionally, +the discussion in a pair makes sure that obviously wrong pathes of development are +avoided. If something seems too hard to test or to pin down explicitely this is +taken as an indication of an underlying design problem. + +Note that more traditional approaches even in the free software world usually follow a model +where developers work alone and only meet to talk. Instead with sprint-driven development +talking and actually implementing resulting ideas ensures a more focused approach with fast +feedback cycles. Moreover, while coding in pairs developers educate each other which leads +to a broader common understanding of PyPy. During a sprint multiple pairs want to work in +parallel which adds pressure on design decisions so that independent development of components +of the system is possible. Thus sprints not only deepen the communication and understanding +among researchers and developers but they imply a working process which enhances the software +design in multiple ways. + +It is helpful to understand that with a very-high-level-language like Python +rapid development in coding-sprints becomes especially effective. A VHLL-language allows to +focus on ideas rather than on low-level language details. In combintation with pervasive +test-driven development this eases high-quality rapid evolution towards the intendent +goals. Obviously, the PyPy developers are very experienced with Python and bigger applications +in general. Thus the full potential of coding-sprints is unvealed during PyPy sprints. + +FIXME LAURA: should i add more about the involvement of the Python community here? +and something about the python-sprint-culture (Zope3, Plone, twisted) in general? From hpk at codespeak.net Tue Oct 7 00:11:59 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 7 Oct 2003 00:11:59 +0200 (MEST) Subject: [pypy-svn] rev 1600 - pypy/trunk/doc/funding Message-ID: <20031006221159.01E505A27F@thoth.codespeak.net> Author: hpk Date: Tue Oct 7 00:11:57 2003 New Revision: 1600 Modified: pypy/trunk/doc/funding/B4.5_resources.txt Log: smore more glory talk about sprints and pypy. didn't have enough time and am too tired now to continue. maybe more tommorow morning (laura asked for some more details). Modified: pypy/trunk/doc/funding/B4.5_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.5_resources.txt (original) +++ pypy/trunk/doc/funding/B4.5_resources.txt Tue Oct 7 00:11:57 2003 @@ -7,6 +7,8 @@ but the above sentence seems to indicate that a lot of more stuff should go here. Please feel free to enhance/modify! +Coding Sprints are the key to PyPy's technical development +---------------------------------------------------------- Key to PyPy's technical development and research are so called "sprints". These publically announced one-week meetings serve as an intense working forum to rapidly discuss @@ -17,22 +19,26 @@ avoided. If something seems too hard to test or to pin down explicitely this is taken as an indication of an underlying design problem. -Note that more traditional approaches even in the free software world usually follow a model -where developers work alone and only meet to talk. Instead with sprint-driven development -talking and actually implementing resulting ideas ensures a more focused approach with fast -feedback cycles. Moreover, while coding in pairs developers educate each other which leads -to a broader common understanding of PyPy. During a sprint multiple pairs want to work in -parallel which adds pressure on design decisions so that independent development of components -of the system is possible. Thus sprints not only deepen the communication and understanding -among researchers and developers but they imply a working process which enhances the software -design in multiple ways. - -It is helpful to understand that with a very-high-level-language like Python -rapid development in coding-sprints becomes especially effective. A VHLL-language allows to -focus on ideas rather than on low-level language details. In combintation with pervasive -test-driven development this eases high-quality rapid evolution towards the intendent -goals. Obviously, the PyPy developers are very experienced with Python and bigger applications -in general. Thus the full potential of coding-sprints is unvealed during PyPy sprints. +Note that more traditional approaches usually follow a model where developers work alone +and only meet to talk. Instead with sprint-driven development talking and actually +implementing resulting ideas ensures a more focused approach with fast feedback cycles. +While the free software community is successful especially because of it's open +communication model sprints are an accelerator to this process. While coding in pairs +developers educate each other which leads to a broader common understanding of the project. +During a sprint multiple pairs want to work in parallel which adds pressure on design +decisions so that independent development of components of the system is possible. +Thus sprints not only deepen the communication and understanding among researchers and +developers but they imply a working process which enhances the software design in multiple ways. + +With a very-high-level-language like Python rapid development in coding-sprints becomes +especially effective. A VHLL-language generally allows to focus on ideas rather than on low-level +language details. In combintation with pervasive test-driven development this eases high-quality +rapid evolution towards the intendent goals. Obviously, the PyPy developers are very experienced +with Python and bigger applications in general. Thus the full potential of coding-sprints is +unvealed during PyPy sprints. In less than five weeks worth of development (during four sprints) +the group produced a working prototype which is a big success not only in the eyes of its +developers. + FIXME LAURA: should i add more about the involvement of the Python community here? and something about the python-sprint-culture (Zope3, Plone, twisted) in general? From ale at codespeak.net Tue Oct 7 09:42:03 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Tue, 7 Oct 2003 09:42:03 +0200 (MEST) Subject: [pypy-svn] rev 1601 - pypy/trunk/doc/funding_retarget Message-ID: <20031007074203.582FB5A27F@thoth.codespeak.net> Author: ale Date: Tue Oct 7 09:42:02 2003 New Revision: 1601 Added: pypy/trunk/doc/funding_retarget/ - copied from rev 1599, pypy/trunk/doc/funding/ Modified: pypy/trunk/doc/funding_retarget/B3.0_impact.txt Log: made a copy Modified: pypy/trunk/doc/funding_retarget/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding_retarget/B3.0_impact.txt Tue Oct 7 09:42:02 2003 @@ -1,10 +1,17 @@ +<<<<<<< .mine +<<<<<<< .mine +<<<<<<< .mine +======= +======= FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it FIXME think about including Logilab and DFKI references +>>>>>>> .r1558 :DELETE:BEGIN +>>>>>>> .r1494 B.3 Potential impact Describe the strategic impact of the proposed project, for example in @@ -17,11 +24,48 @@ (Recommended length ? three pages) +<<<<<<< .mine +This impact of this project is threefold: +1) It will enable producers of embedded, mobile and handheld devices to use a Very +High level Language (VHLL), without a performance penalty. + +2) The project will lessen the dependence of non European proprietary software +vendors + +3) Enable more software craftmans ship + +I think that would be good for this long text to give the conclusions +in the beginning, then the arguments. The higlights needs refrasing + +======= :DELETE:END Potential impact =================== +<<<<<<< .mine +<<<<<<< .mine +<<<<<<< .mine +>>>>>>> .r1494 +This project has direct relevance to European competitiveness. Europe +is the acknowledged world leader in handheld, mobile, and embedded +devices. But people working in such industries have long desired a +high level language with a very small footprint. They wish to use +only the language features which they need. But modern languages are +chock full of features designed for the developer to use when +developing software. The new innovative concept of Object Spaces, +pioneered by PyPy makes the construction of tiny Object Spaces, +suitable for running on the smallest devices straight-forward. A +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. These two reasons +make the Python Business Forum quite excited about PyPy. +======= +Python is ranked the sixth most popular computer language in the +world, used by tens of thousands of European programmers. Thus a new +======= + +======= +>>>>>>> .r1594 Python is an extremely popular Very-High-Level, Object-Oriented, programming language. @@ -125,6 +169,7 @@ +>>>>>>> .r1558 implementation of the language with substantial improvements will have an immediate direct effect on Eropean competitiveness. Moreover, the planned improvements directly target the handheld, mobile, and @@ -138,6 +183,7 @@ particular hardware characteristics -- for instance, a version that runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. +>>>>>>> .r1531 Python with g reater speed will seamlessly improve the offerings of @@ -302,4 +348,186 @@ re: 'Indicate what account is taken of other national or international research activities.' -- Samuele and Armin read the literature all the time. What do I say? -ppppppppppppppp \ No newline at end of file +<<<<<<< .mine +======= +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +This project has direct relevance to European competitiveness. Europe +is the acknowledged world leader in handheld, mobile, and embedded +devices. But people working in such industries have long desired a +high level language with a very small footprint. They wish to use +only the language features which they need. But modern languages are +chock full of features designed for the developer to use when +developing software. The new innovative concept of Object Spaces, +pioneered by PyPy makes the construction of tiny Object Spaces, +suitable for running on the smallest devices straight-forward. A +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. These two reasons +make the Python Business Forum quite excited about PyPy. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity and code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from the what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos. + +Date: Sun, 14 Sep 2003 11:52:05 -0400 +From: Arthur +To: edu-sig at python.org +Subject: [Edu-sig] re : If the PyPy Project ... + +List-Id: Python in education + +Terry - + +>Since I presume the goal of PyPy is to implement *Python* in Python, +>wouldn't the implementation language be rather insignificant to an +>end-user such as an educator? Why would it be "better" than >CPython? + +For whatever reason, the complex built_in and the cmath module, implemented +in Python, are part of the early pypy codebase. As I had been spending some +time in the complex realm with PyGeo - a simple version of the complex +realm, as these things go - Laura's post gave me the impetus to try to +plugin the pypy implementations. + +Only got stuck on the typing issue. My code tests for +instance(object,complex). The pypy complexobject, unadorned, is a class - +and fails the test. But that leads me into a deeper look at some of the +pypy codebase, trying to understand a little bit of how this kind of issue +are to be dealt with. Not that I got there, yet - but I did seem to have an +avenue to explore I would not have with CPython - as someone who doesn't C, +and has no intention of trying, seriously, to do so. + +As someone living within the limits of having Python as my only real +language, I think that pypy should open things up for me considerably. It +will make Python, I believe, a more attractive educational language, because +it will make someone with a strong foundation in Python - as the language of +choice - a more self-sufficient programmer. + +Presumably - the point is - there will be less cases where the right +approach would be an extension module in C or C++, and a sense of +fundamental compromise should one not be equipped to go there. Many +thousands of folks - using VB and the like - already do involved, +highly performing real world applications and make nice livings doing +so, without being equipped to do C. I am thinking that pypy would put +Python more squarely in that "space". + +Is any of this so, or just hope? + +Art + +:: + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +>>>>>>> .r1382 +======= +ppppppppppppppp>>>>>>> .r1558 From ale at codespeak.net Tue Oct 7 09:49:13 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Tue, 7 Oct 2003 09:49:13 +0200 (MEST) Subject: [pypy-svn] rev 1602 - pypy/trunk/doc/funding/funding Message-ID: <20031007074913.B1EF75A27F@thoth.codespeak.net> Author: ale Date: Tue Oct 7 09:49:12 2003 New Revision: 1602 Added: pypy/trunk/doc/funding/funding/ - copied from rev 1599, pypy/trunk/doc/funding/ Modified: pypy/trunk/doc/funding/funding/B3.0_impact.txt Log: made a copy (it failed the first time) Modified: pypy/trunk/doc/funding/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/funding/B3.0_impact.txt Tue Oct 7 09:49:12 2003 @@ -1,10 +1,17 @@ +<<<<<<< .mine +<<<<<<< .mine +<<<<<<< .mine +======= +======= FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it FIXME think about including Logilab and DFKI references +>>>>>>> .r1558 :DELETE:BEGIN +>>>>>>> .r1494 B.3 Potential impact Describe the strategic impact of the proposed project, for example in @@ -17,11 +24,48 @@ (Recommended length ? three pages) +<<<<<<< .mine +This impact of this project is threefold: +1) It will enable producers of embedded, mobile and handheld devices to use a Very +High level Language (VHLL), without a performance penalty. + +2) The project will lessen the dependence of non European proprietary software +vendors + +3) Enable more software craftmans ship + +I think that would be good for this long text to give the conclusions +in the beginning, then the arguments. The higlights needs refrasing + +======= :DELETE:END Potential impact =================== +<<<<<<< .mine +<<<<<<< .mine +<<<<<<< .mine +>>>>>>> .r1494 +This project has direct relevance to European competitiveness. Europe +is the acknowledged world leader in handheld, mobile, and embedded +devices. But people working in such industries have long desired a +high level language with a very small footprint. They wish to use +only the language features which they need. But modern languages are +chock full of features designed for the developer to use when +developing software. The new innovative concept of Object Spaces, +pioneered by PyPy makes the construction of tiny Object Spaces, +suitable for running on the smallest devices straight-forward. A +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. These two reasons +make the Python Business Forum quite excited about PyPy. +======= +Python is ranked the sixth most popular computer language in the +world, used by tens of thousands of European programmers. Thus a new +======= + +======= +>>>>>>> .r1594 Python is an extremely popular Very-High-Level, Object-Oriented, programming language. @@ -125,6 +169,7 @@ +>>>>>>> .r1558 implementation of the language with substantial improvements will have an immediate direct effect on Eropean competitiveness. Moreover, the planned improvements directly target the handheld, mobile, and @@ -138,6 +183,7 @@ particular hardware characteristics -- for instance, a version that runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. +>>>>>>> .r1531 Python with g reater speed will seamlessly improve the offerings of @@ -302,4 +348,186 @@ re: 'Indicate what account is taken of other national or international research activities.' -- Samuele and Armin read the literature all the time. What do I say? -ppppppppppppppp \ No newline at end of file +<<<<<<< .mine +======= +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +This project has direct relevance to European competitiveness. Europe +is the acknowledged world leader in handheld, mobile, and embedded +devices. But people working in such industries have long desired a +high level language with a very small footprint. They wish to use +only the language features which they need. But modern languages are +chock full of features designed for the developer to use when +developing software. The new innovative concept of Object Spaces, +pioneered by PyPy makes the construction of tiny Object Spaces, +suitable for running on the smallest devices straight-forward. A +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. These two reasons +make the Python Business Forum quite excited about PyPy. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity and code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from the what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos. + +Date: Sun, 14 Sep 2003 11:52:05 -0400 +From: Arthur +To: edu-sig at python.org +Subject: [Edu-sig] re : If the PyPy Project ... + +List-Id: Python in education + +Terry - + +>Since I presume the goal of PyPy is to implement *Python* in Python, +>wouldn't the implementation language be rather insignificant to an +>end-user such as an educator? Why would it be "better" than >CPython? + +For whatever reason, the complex built_in and the cmath module, implemented +in Python, are part of the early pypy codebase. As I had been spending some +time in the complex realm with PyGeo - a simple version of the complex +realm, as these things go - Laura's post gave me the impetus to try to +plugin the pypy implementations. + +Only got stuck on the typing issue. My code tests for +instance(object,complex). The pypy complexobject, unadorned, is a class - +and fails the test. But that leads me into a deeper look at some of the +pypy codebase, trying to understand a little bit of how this kind of issue +are to be dealt with. Not that I got there, yet - but I did seem to have an +avenue to explore I would not have with CPython - as someone who doesn't C, +and has no intention of trying, seriously, to do so. + +As someone living within the limits of having Python as my only real +language, I think that pypy should open things up for me considerably. It +will make Python, I believe, a more attractive educational language, because +it will make someone with a strong foundation in Python - as the language of +choice - a more self-sufficient programmer. + +Presumably - the point is - there will be less cases where the right +approach would be an extension module in C or C++, and a sense of +fundamental compromise should one not be equipped to go there. Many +thousands of folks - using VB and the like - already do involved, +highly performing real world applications and make nice livings doing +so, without being equipped to do C. I am thinking that pypy would put +Python more squarely in that "space". + +Is any of this so, or just hope? + +Art + +:: + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +>>>>>>> .r1382 +======= +ppppppppppppppp>>>>>>> .r1558 From ale at codespeak.net Tue Oct 7 09:57:38 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Tue, 7 Oct 2003 09:57:38 +0200 (MEST) Subject: [pypy-svn] rev 1603 - pypy/trunk/doc/funding/funding Message-ID: <20031007075738.2F9685A27F@thoth.codespeak.net> Author: ale Date: Tue Oct 7 09:57:37 2003 New Revision: 1603 Removed: pypy/trunk/doc/funding/funding/ Log: I made the copy the wrong place, sorry From ale at codespeak.net Tue Oct 7 14:31:03 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Tue, 7 Oct 2003 14:31:03 +0200 (MEST) Subject: [pypy-svn] rev 1604 - pypy/trunk/doc/funding_retarget Message-ID: <20031007123103.3EE335A27F@thoth.codespeak.net> Author: ale Date: Tue Oct 7 14:31:02 2003 New Revision: 1604 Modified: pypy/trunk/doc/funding_retarget/abstract.txt Log: Modified: pypy/trunk/doc/funding_retarget/abstract.txt ============================================================================== --- pypy/trunk/doc/funding_retarget/abstract.txt (original) +++ pypy/trunk/doc/funding_retarget/abstract.txt Tue Oct 7 14:31:02 2003 @@ -1,33 +1,47 @@ - This proposal directly addresses the Strategic Objective - IST-2002-2.3.2.3 - 'Open development platforms for software and - services' of the Second Call of the Information Society - Technologies Workprogramme. - - The PyPy project will build a flexible, modular, context-aware, - self-hosting Just-In-Time (JIT) specialising compiler for Python. - Python is a portable, interpreted, object-oriented, Free/Open - Source Very-High Level Language (VHLL). The most recent version - of the language is Python 2.3.1, released under the Python - Software Foundation License, approved by both the Open Source - Initiative, and the Free Software Foundation. - - Creating a new vesion will take advantage of the known European - strengths in formal methods and languages (Python was first - developed in 1990 at CWI, Centrum voor Wiskunde en Informatica, - in the Netherlands.) It will go beyond the state of the Art in - computer languages, and produce a runtime system which is much - better suited for the development and deployment of networked, - embedded, and mobile devices. - - Considerable effort will be made to disseminate this knowledge, - among academics, SMEs, Industrial users, and through our Open - website and mailing lists, any interested person. This will - ensure that the project will be fully exploited upon completion. - - As foundational applied research, focusing on fundamental design - concepts, there will be significant indirect effects wherever the - Python programming langauge is taught or deployed. Python is - widely used as a 'first programming language' and has been very - successful among non-programmers, particularily women. The - success of Python can therefore have a limited effect in - promoting social cohesion and gender equality. + This proposal directly addresses the Strategic Objective + IST-2002-2.3.2.3 - 'Open development platforms for software and + services' of the Second Call of the Information Society + Technologies Workprogramme. + + + The PyPy project will build a flexible, modular, context-aware, + self-hosting programming platform. The goal is to finally deliver on + the promises of Very-High Level Languages (VHLL) to produce significant + productivity gains to the software industry. + + To fullfill this ambitious goal, the innovative concept of ObjectSpaces + will be a key technology. ObjectSpaces are high level formulations of + the parts that make a language interpreter work (compiler, object library, + main loop). The separation will enable modularity and flexibility of the + interpreter. As the ObjectSpaces themselves are written in a VHLL it is + possible to make ObjectSpaces specializing for execution speed, memory + consumption, target processors etc. + + PyPy will be portable, interpreted, object-oriented, Free/Open + Source Very-High Level Language, with a wide range of applications. + + Creating PyPy will take advantage of the known European strengths + in formal methods and languages. It will go beyond the state of the Art + in computer languages, and produce a runtime system which is much + better suited for the development and deployment of networked, + embedded, and mobile devices. + + Considerable effort will be made to disseminate this knowledge,among + academics, SMEs, Industrial users, and through our Open website and + mailing lists, any interested person. This will ensure that the project + will be fully exploited upon completion. + + The target language for PyPy has been choosen to be Python (a portable, + Open Source language was first developed in 1990 at CWI, Centrum voor + Wiskunde en Informatica, in the Netherlands.) The most recent version of + Python is Python 2.3.2 released under the Python Software Foundation + License, approved by both the Open Source Initiative, and the Free + Software Foundation. + + As foundational applied research, focusing on fundamental design + concepts, there will be significant indirect effects wherever the + Python programming langauge is taught or deployed. Python is + widely used as a 'first programming language' and has been very + successful among non-programmers, particularily women. The + success of Python can therefore have a limited effect in + promoting social cohesion and gender equality. \ No newline at end of file From arigo at codespeak.net Tue Oct 7 14:54:55 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 7 Oct 2003 14:54:55 +0200 (MEST) Subject: [pypy-svn] rev 1605 - pypy/trunk/src/pypy Message-ID: <20031007125455.943135A27F@thoth.codespeak.net> Author: arigo Date: Tue Oct 7 14:54:55 2003 New Revision: 1605 Modified: pypy/trunk/src/pypy/TODO Log: Task: integrate the code in translator, with a script that can be invoked from the command-line to play with sample source code Modified: pypy/trunk/src/pypy/TODO ============================================================================== --- pypy/trunk/src/pypy/TODO (original) +++ pypy/trunk/src/pypy/TODO Tue Oct 7 14:54:55 2003 @@ -16,6 +16,8 @@ Task: generate a nice dot-graph from the structure of PyPy +Task: integrate the code in translator, with a script that can be + invoked from the command-line to play with sample source code Task: trash the standard unittest framework/enhance it From tismer at codespeak.net Tue Oct 7 18:05:26 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 18:05:26 +0200 (MEST) Subject: [pypy-svn] rev 1606 - pypy/trunk/doc/funding Message-ID: <20031007160526.846C05A27F@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 18:05:25 2003 New Revision: 1606 Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Log: removed numbering from heading Modified: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- pypy/trunk/doc/funding/B2.0.0_new_relevance.txt (original) +++ pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Tue Oct 7 18:05:25 2003 @@ -222,7 +222,7 @@ I don't know what to say here, either. Have I said it already? -2.5 Contributiuon to EC Policies +Contributiuon to EC Policies ++++++++++++++++++++++++++++++++ There will be transfer of knowledge from research to industry through From tismer at codespeak.net Tue Oct 7 18:11:49 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 18:11:49 +0200 (MEST) Subject: [pypy-svn] rev 1607 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031007161149.0E0E45A27F@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 18:11:48 2003 New Revision: 1607 Modified: pypy/trunk/doc/funding/B3.0_impact.txt pypy/trunk/doc/funding/B3.2.strategic_impact.txt pypy/trunk/doc/funding/crossreferences.asc pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw pypy/trunk/doc/funding/mkxref.py Log: fixed some more headers, built PDF again. Still have my workload to do! Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Tue Oct 7 18:11:48 2003 @@ -139,8 +139,7 @@ runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. -Python with g -reater speed will seamlessly improve the offerings of +Python with greater speed will seamlessly improve the offerings of those European Companies who develop using Python. Moreover, a great many companies, in deciding what language to develop @@ -302,4 +301,4 @@ re: 'Indicate what account is taken of other national or international research activities.' -- Samuele and Armin read the literature all the time. What do I say? -ppppppppppppppp \ No newline at end of file + Modified: pypy/trunk/doc/funding/B3.2.strategic_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.2.strategic_impact.txt (original) +++ pypy/trunk/doc/funding/B3.2.strategic_impact.txt Tue Oct 7 18:11:48 2003 @@ -16,9 +16,12 @@ (Recommended length ? three pages) +B.3.2 Strategic impact +====================== + :DELETE:END -B.3.2 Strategic impact +Strategic impact ====================== PyPy will have a significant strategic impact throughout the IT Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Tue Oct 7 18:11:48 2003 @@ -7,11 +7,14 @@ .. _WP07: B6.7.wp07_translator_optimisations.html .. _WP08: B6.7.wp08_core_optimisations.html .. _WP09: B6.7.wp09_language_research.html +.. _WP10: .. _WP11: B6.7.wp11_validations.html .. _WP12: B6.7.wp12_integration_config.html +.. _WP13: .. _WP14: B6.7.wp14_documentation.html .. _WP21: B6.7.wp21_interpreter_completion.html .. _WP22: B6.7.wp22_cpython_to_python.html .. _WP90: B6.7.wp90_constraint_prog.html +.. attention:: **2 files missing: WP10 WP13** .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Tue Oct 7 18:11:48 2003 @@ -170,7 +170,10 @@ from win32com.client import Dispatch objServiceManager= Dispatch("com.sun.star.ServiceManager") objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop") - objDocument= objDesktop.loadComponentFromURL(r"file:///D|/pypy/trunk/doc/funding/makedoc/prep_part_b.sxw", "_blank", 0, ()) + import urllib + template = "prep_part_b.sxw" + docurl = "file:" + urllib.pathname2url(os.path.abspath(template)) + objDocument= objDesktop.loadComponentFromURL(docurl, "_blank", 0, ()) #wonder = objDesktop.loadComponentFromURL(r"macro://./Standard.test_import.build_doc", "_blank", 0, ()) prog = r"E:\Programme\OpenOffice.org1.1.0\program\soffice.exe" args = "macro://./Standard.test_import.build_doc" Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/mkxref.py ============================================================================== --- pypy/trunk/doc/funding/mkxref.py (original) +++ pypy/trunk/doc/funding/mkxref.py Tue Oct 7 18:11:48 2003 @@ -27,7 +27,7 @@ res["WP"+num] = newfname return res -REF_FILE = "B6.1_plan_introduction.txt" +REF_FILE = "B6.4_workpackage_list.txt" def get_wps_from_file(): # read the file and find all WPnn_ references From tismer at codespeak.net Tue Oct 7 18:13:28 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 18:13:28 +0200 (MEST) Subject: [pypy-svn] rev 1608 - in pypy/trunk/doc/funding_retarget: makedoc test Message-ID: <20031007161328.B2C5D5A27F@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 18:13:28 2003 New Revision: 1608 Removed: pypy/trunk/doc/funding_retarget/makedoc/ pypy/trunk/doc/funding_retarget/test/ Log: removed subfolders which don't belong to retarget From hpk at codespeak.net Tue Oct 7 18:16:13 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 7 Oct 2003 18:16:13 +0200 (MEST) Subject: [pypy-svn] rev 1609 - pypy/trunk/src/pypy/translator Message-ID: <20031007161613.B7A075A27F@thoth.codespeak.net> Author: hpk Date: Tue Oct 7 18:16:13 2003 New Revision: 1609 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: applied seo's fix in order to not emit empty lines for non-typed vars. Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Tue Oct 7 18:16:13 2003 @@ -144,7 +144,9 @@ #self.putline("# %r" % self.annotations) for var in self.variablelocations: if var not in fun.startblock.input_args: - self.putline(self._vardecl(var)) + decl = self._vardecl(var) + if decl: + self.putline(decl) self.indent -= 1 self.lines.extend(functionbodylines) From tismer at codespeak.net Tue Oct 7 19:14:06 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 19:14:06 +0200 (MEST) Subject: [pypy-svn] rev 1610 - pypy/trunk/doc/funding Message-ID: <20031007171406.99A485A27F@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 19:13:31 2003 New Revision: 1610 Added: pypy/trunk/doc/funding/OOPSLA.Squeak.htm - copied unchanged from rev 1609, pypy/trunk/doc/funding/OOPSLA.Squeak.html Log: renamed to .htm, since I regularily delete all generated .html files From tismer at codespeak.net Tue Oct 7 19:57:38 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 19:57:38 +0200 (MEST) Subject: [pypy-svn] rev 1611 - pypy/trunk/doc/funding Message-ID: <20031007175738.2CDB25A27F@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 19:57:36 2003 New Revision: 1611 Added: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (contents, props changed) - copied, changed from rev 1609, pypy/trunk/doc/funding/B6.7.wp09_language_research.txt Log: adding/renaming Copied: pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (from rev 1609, pypy/trunk/doc/funding/B6.7.wp09_language_research.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_language_research.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt Tue Oct 7 19:57:36 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -.. |title| replace:: Language Research and Extension -.. |wp| replace:: WP49 +.. |title| replace:: Language Research and Extensions +.. |wp| replace:: WP09 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 From tismer at codespeak.net Tue Oct 7 20:13:38 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 7 Oct 2003 20:13:38 +0200 (MEST) Subject: [pypy-svn] rev 1612 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031007181338.986525A40B@thoth.codespeak.net> Author: tismer Date: Tue Oct 7 20:13:35 2003 New Revision: 1612 Added: pypy/trunk/doc/funding/B6.2_tech_aspects.txt (contents, props changed) - copied, changed from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.3_risks_minimise.txt (contents, props changed) - copied, changed from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.4_gantt.txt - copied, changed from rev 1605, pypy/trunk/doc/funding/TODO pypy/trunk/doc/funding/B6.5_workpackage_list.txt (contents, props changed) - copied, changed from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.6_deliverables_list.txt (contents, props changed) - copied, changed from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt - copied, changed from rev 1609, pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt (contents, props changed) - copied, changed from rev 1611, pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt Removed: pypy/trunk/doc/funding/B6.4_workpackage_list.txt pypy/trunk/doc/funding/B6.7.wp09_language_research.txt pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt pypy/trunk/doc/funding/B6.7.wp21_interpreter_completion.txt pypy/trunk/doc/funding/B6.7.wp22_cpython_to_python.txt pypy/trunk/doc/funding/OOPSLA.Squeak.html Modified: pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt pypy/trunk/doc/funding/makedoc/format.py pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: changed a lot, added missing files, generated PDF... Copied: pypy/trunk/doc/funding/B6.2_tech_aspects.txt (from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.2_tech_aspects.txt Tue Oct 7 20:13:35 2003 @@ -2,48 +2,7 @@ .. include:: crossreferences.asc -Workpackage List -==================== +Research and Technological Aspects and Options +================================================== -.. |wpn| replace:: Work-package No -.. |lcn| replace:: Lead contractor No -.. |pm| replace:: Person-months -.. |sm| replace:: Start month -.. |em| replace:: End month -.. |dn| replace:: Deliverable No - - -===== ===================================================== ===== ==== ==== ==== ==== ======== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp -===== ===================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management 24 0 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 36 0 9 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Dynamic Optimisations 36 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations 27 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Core Optimisations 24 9 24 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extension NC? 9 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Application of language extensions NC? 9 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Validation of flexibility 27 18 24 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Assess improvements of existing applications NC? 20 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot -===== ===================================================== ===== ==== ==== ==== ==== ======== - -Note: constraint and aspects and type checking go into Langage Extension -semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file +FIXME something must go here. \ No newline at end of file Copied: pypy/trunk/doc/funding/B6.3_risks_minimise.txt (from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.3_risks_minimise.txt Tue Oct 7 20:13:35 2003 @@ -2,48 +2,8 @@ .. include:: crossreferences.asc -Workpackage List -==================== +Risks in the Project and Steps to Minimise +============================================= -.. |wpn| replace:: Work-package No -.. |lcn| replace:: Lead contractor No -.. |pm| replace:: Person-months -.. |sm| replace:: Start month -.. |em| replace:: End month -.. |dn| replace:: Deliverable No +FIXME: some text must go here. - -===== ===================================================== ===== ==== ==== ==== ==== ======== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp -===== ===================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management 24 0 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 36 0 9 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Dynamic Optimisations 36 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations 27 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Core Optimisations 24 9 24 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extension NC? 9 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Application of language extensions NC? 9 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Validation of flexibility 27 18 24 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Assess improvements of existing applications NC? 20 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot -===== ===================================================== ===== ==== ==== ==== ==== ======== - -Note: constraint and aspects and type checking go into Langage Extension -semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file Copied: pypy/trunk/doc/funding/B6.4_gantt.txt (from rev 1605, pypy/trunk/doc/funding/TODO) ============================================================================== --- pypy/trunk/doc/funding/TODO (original) +++ pypy/trunk/doc/funding/B6.4_gantt.txt Tue Oct 7 20:13:35 2003 @@ -1,11 +1,5 @@ -Things left to do for proposal completion ------------------------------------------ +Project planning and time table; (Gantt chart) +----------------------------------------------- -* deal with files tagged with FIXME_YOUR_NAME - -* Laura has to deal with ASK_STOCKHOLM tags - -* Christian has to add missing FIXME_YOUR_NAME tags in B6.7* and - reaorganize all the B6.7 files (create missing and rename existing) - -* Laura has to create B7 +.. image:: project_gantt.png + :scale: 70 \ No newline at end of file Deleted: /pypy/trunk/doc/funding/B6.4_workpackage_list.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.4_workpackage_list.txt Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,49 +0,0 @@ -FIXME_LAURA FIXME_NICO: finish this - -.. include:: crossreferences.asc - -Workpackage List -==================== - -.. |wpn| replace:: Work-package No -.. |lcn| replace:: Lead contractor No -.. |pm| replace:: Person-months -.. |sm| replace:: Start month -.. |em| replace:: End month -.. |dn| replace:: Deliverable No - - -===== ===================================================== ===== ==== ==== ==== ==== ======== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp -===== ===================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management 24 0 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 36 0 9 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Dynamic Optimisations 36 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations 27 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Core Optimisations 24 9 24 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extension NC? 9 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Application of language extensions NC? 9 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Validation of flexibility 27 18 24 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Assess improvements of existing applications NC? 20 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot -===== ===================================================== ===== ==== ==== ==== ==== ======== - -Note: constraint and aspects and type checking go into Langage Extension -semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file Copied: pypy/trunk/doc/funding/B6.5_workpackage_list.txt (from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Tue Oct 7 20:13:35 2003 @@ -1,10 +1,14 @@ -FIXME_LAURA FIXME_NICO: finish this - .. include:: crossreferences.asc Workpackage List ==================== +:DELETE:BEGIN + +FIXME_LAURA FIXME_NICO: finish this + +:DELETE:END + .. |wpn| replace:: Work-package No .. |lcn| replace:: Lead contractor No .. |pm| replace:: Person-months @@ -32,7 +36,7 @@ ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP08_ Core Optimisations 24 9 24 Univ SH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extension NC? 9 24 Logilab +WP09_ Language Extensions NC? 9 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP10_ Application of language extensions NC? 9 24 DFKI ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- Copied: pypy/trunk/doc/funding/B6.6_deliverables_list.txt (from rev 1605, pypy/trunk/doc/funding/B6.4_workpackage_list.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.4_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.6_deliverables_list.txt Tue Oct 7 20:13:35 2003 @@ -2,48 +2,60 @@ .. include:: crossreferences.asc -Workpackage List +Deliverables List ==================== -.. |wpn| replace:: Work-package No -.. |lcn| replace:: Lead contractor No -.. |pm| replace:: Person-months -.. |sm| replace:: Start month -.. |em| replace:: End month .. |dn| replace:: Deliverable No +.. |dd| replace:: Deliverable Date +.. |na| replace:: Nature +.. |dl| replace:: Dissemination Level + + +===== ===================================================== ===== ==== ==== +|dn| Deliverable title |dd| |na| |dl| +===== ===================================================== ===== ==== ==== +D1 +----- ----------------------------------------------------- ----- ---- ---- +D2 +----- ----------------------------------------------------- ----- ---- ---- +D3 +===== ===================================================== ===== ==== ==== + +:DELETE:BEGIN + +Deliverable numbers in order of delivery dates: D1 ? Dn + +Month in which the deliverables will be available. Month 0 marking the start of the project, +and all delivery dates being relative to this start date. + +Please indicate the nature of the deliverable using one of the following codes: + + R = Report + + P = Prototype + + D = Demonstrator + + O = Other + +Please indicate the dissemination level using one of the following codes: + + PU = Public + + PP = Restricted to other programme participants (including the Commission Services). + + RE = Restricted to a group specified by the consortium (including the Commission Services). + + CO = Confidential, only for members of the consortium (including the Commission Services). + +:DELETE:END + +Workpackage description +=========================== +:DELETE:BEGIN -===== ===================================================== ===== ==== ==== ==== ==== ======== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp -===== ===================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management 24 0 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 36 0 9 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Dynamic Optimisations 36 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations 27 9 18 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Core Optimisations 24 9 24 Univ SH ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extension NC? 9 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Application of language extensions NC? 9 24 DFKI ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Validation of flexibility 27 18 24 PBF ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Assess improvements of existing applications NC? 20 24 Logilab ------ ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot -===== ===================================================== ===== ==== ==== ==== ==== ======== +Here the working packages start. +Just leave this header in. -Note: constraint and aspects and type checking go into Langage Extension -semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file +:DELETE:END Deleted: /pypy/trunk/doc/funding/B6.7.wp09_language_research.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp09_language_research.txt Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,48 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Language Research and Extension -.. |wp| replace:: WP49 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -XXX write me - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,72 +0,0 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN: - -participants are Logilab and PBF - -possible: Alex Martelli with Strakt or PBF ? - - -:DELETE:END: - -.. |title| replace:: Aspect Oriented Programming and static checking -.. |wp| replace:: WP100 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 0 -.. |p2| replace:: Y -.. |m2| replace:: 0 -.. |p3| replace:: Z -.. |m3| replace:: 0 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Implement aspect oriented programming features to -allow for more flexible ways to design software -applications by better separating design concerns. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. It will also -allow us to implement advanced static checking and code -correctness capabilities, thus furthering the work done with -the pychecker and pylint tools. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt (from rev 1609, pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp100_aspect_oriented_prog.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Tue Oct 7 20:13:35 2003 @@ -6,11 +6,19 @@ possible: Alex Martelli with Strakt or PBF ? +FIXME_NICO: Title was +Aspect Oriented Programming and static checking + +Is this the right place for this? Please change as you see fit. + +Also, part of the work description should be moved into +the introduction, it is a little too verbose here. +(Just leave it in here for now) :DELETE:END: -.. |title| replace:: Aspect Oriented Programming and static checking -.. |wp| replace:: WP100 +.. |title| replace:: Application of language extensions +.. |wp| replace:: WP10 .. |start| replace:: M2 .. |p1| replace:: X .. |m1| replace:: 0 Modified: pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Tue Oct 7 20:13:35 2003 @@ -22,7 +22,7 @@ **Objectives** -XXX write me +FIXME_HOLGER write me Develop tools that will allow to chose from available features to build a custom interpreter integrating selected capabilities. @@ -32,20 +32,20 @@ **Description of work** -XXX write me +FIXME_HOLGER write me .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -XXX write me +FIXME_HOLGER write me .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -XXX write me +FIXME_HOLGER write me .. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt (from rev 1611, pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt Tue Oct 7 20:13:35 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -.. |title| replace:: Language Research and Extensions -.. |wp| replace:: WP09 +.. |title| replace:: Assess improvements of existing applications +.. |wp| replace:: WP13 .. |start| replace:: 0 .. |p1| replace:: X .. |m1| replace:: 5 Deleted: /pypy/trunk/doc/funding/B6.7.wp21_interpreter_completion.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp21_interpreter_completion.txt Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,55 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Development and Completion of the PyPy Interpreter -.. |wp| replace:: WP21 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Z -.. |m3| replace:: 3 -.. |p4| replace:: T -.. |m4| replace:: 3 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -The PyPy interpreter itself should be developed and completed -as a regular Python program. This package includes all -parts of CPython that we don't want to move to WP22_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Coordinate with WP22_ which parts of CPython - should be implemented in RPython. -- Implementation of all C modules and C objects -- Further investigation of the unorthodox multimethod - concepts that the standard object space is based on, - and how to hook in the bytecode compiler. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL01: First complete Python Implementation - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M1 with WP22_ - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp22_cpython_to_python.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp22_cpython_to_python.txt Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,56 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Translation of CPython into regular Python -.. |wp| replace:: WP22 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 3 -.. |p2| replace:: Y -.. |m2| replace:: 3 -.. |p3| replace:: Z -.. |m3| replace:: 3 -.. |p4| replace:: T -.. |m4| replace:: 3 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Translate all parts of CPython which we don't want to -implement in WP21_ into regular Python libraries. -Note: These ones should also work without PyPy, being just plain-Python -replacements for existing CPython functionality. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -- Coordinate with WP21_ which parts of CPython should be implemented in Python -- Implementation of all C modules and C objects -- Implement the Python bytecode compiler, which definately should - become a regular Python program, instead of being built - into the interpreter. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL01: First complete Python Implementation -- DL??? Passing all applicable elements of the standard test suite. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M1 with WP21_ - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/OOPSLA.Squeak.html ============================================================================== --- /pypy/trunk/doc/funding/OOPSLA.Squeak.html Tue Oct 7 20:13:35 2003 +++ (empty file) @@ -1,1099 +0,0 @@ - - - - - - - - - - -

Back to the Future

- -

The Story of Squeak, A Practical Smalltalk -Written in Itself

- -

by

- -

Dan Ingalls Ted Kaehler John Maloney Scott -Wallace Alan Kay

- -

at Apple Computer while doing this work, now at

-
- -
Walt Disney Imagineering 
-1401 Flower Street 
-P.O. Box 25020 
-Glendale, CA 91221
-dani at wdi.disney.com
-
-
- -

Abstract

- -

Squeak is an open, highly-portable Smalltalk implementation -whose virtual machine is written entirely in Smalltalk, making it -easy to debug, analyze, and change. To achieve practical -performance, a translator produces an equivalent C program whose -performance is comparable to commercial Smalltalks.

- -

Other noteworthy aspects of Squeak include: a compact object -format that typically requires only a single word of overhead per -object; a simple yet efficient incremental garbage collector for -32-bit direct pointers; efficient bulk-mutation of objects; -extensions of BitBlt to handle color of any depth and -anti-aliased image rotation and scaling; and real-time sound and -music synthesis written entirely in Smalltalk.

- -

Overview

- -

Squeak is a modern implementation of Smalltalk-80 that is -available for free via the Internet, at http://www.research.apple.com/research/proj/learning_concepts/squeak/ -and other sites.

- -

It includes platform-independent support for -color, sound, and image processing. Originally developed on the -Macintosh, members of its user community have since ported it to -numerous platforms including Windows 95 and NT, Windows CE, all -common flavors of UNIX, and the Acorn.

- -

Squeak stands alone as a -practical Smalltalk in which a researcher, professor, or -motivated student can examine source code for every part of the -system, including graphics primitives and the virtual machine -itself, and make changes immediately and without needing to see -or deal with any language other than Smalltalk. It also runs -bit-identical images across its wide portability base. Three -strands weave through this paper: -

  1. the design of the Squeak -virtual machine, which differs in several interesting ways from -the implementation presented in the Smalltalk "Blue -Book" [Gold83] and explored in the "Green Book" -[Kras83];
  2. an implementation strategy based on writing the -Squeak virtual machine in Smalltalk and translating it into C, -using an existing Smalltalk for bootstrapping until Squeak was -able to debug and generate its own virtual machine; and
  3. the -incremental development process through which Squeak was created -and evolved over the course of a year.

- -

Background

- -

In December of -1995, the authors found themselves wanting a development -environment in which to build educational software that could be -used—and even programmed—by non-technical people, and -by children. We wanted our software to be effective in -mass-access media such as PDAs and the Internet, where download -times and power considerations make compactness essential, and -where hardware is diverse, and operating systems may change or be -completely absent. Therefore our ideal system would be a small, -portable kernel of simple and uniform design that could be -adapted rapidly to new delivery vehicles. We considered using -Java but, despite its promise, Java was not yet mature: its -libraries were in a state of flux, few commercial implementations -were available, and those that were available lacked the hooks -required to create the kind of dynamic change that we envisioned.

- -

While Smalltalk met the technical desiderata, none of the -available implementations gave us the kind of control we wanted -over graphics, sound, and the Smalltalk engine itself, nor the -freedom to port and distribute the resulting work, including its -host environment, freely over the Internet. Moreover, we felt -that we were not alone, that many others in the research -community shared our desire for an open, portable, malleable, and -yet practical object-oriented programming environment. It became -clear that the best way to get what we all wanted was to build a -new Smalltalk with these goals and to share it with this wider -community.

- -

Project Plan

- -

We did not have to start from scratch, as -we had access to the existing Apple Smalltalk-80 implementation, -which was a gold mine of useful software. This system consisted -of an image, or object memory, containing the Smalltalk-80 class -library, and a separate interpreter, or VM (virtual machine), for -running on the Macintosh. However, the Apple image format was -limited by its use of indirect pointers and an object table. -Worse yet, the original interpreter consisted of 120 pages of -sparsely commented 68020 assembly code that had passed through -the hands of seven authors. Portable it was not.

- -

We determined -that implementation in C would be key to portability but none of -us wanted to write in C. However, two of us had once adapted the -Smalltalk formatter (pretty-printer) to convert a body of code to -BCPL. Based on that experience, we determined to write and debug -the virtual machine in Smalltalk. Then, in parallel, we would -write (also in Smalltalk) a translator from Smalltalk to C, and -thus let Smalltalk build its own production interpreter. Out of -this decision grew the following plan for building a new -Smalltalk system in the shortest possible time:

- -

Produce a new -image:

  • Design a new Object Memory and image file format. -
  • -
  • Alter the ST-80 System Tracer to write an image in the new -format.
  • -
  • Eliminate uses of Mac Toolbox calls to restore -Smalltalk-80 portability.
  • -
  • Write a new file system with a -simple, portable interface.
-Produce a new interpreter written in -Smalltalk:
  • Type in the Blue Book descriptions for the -Interpreter and BitBlt.
  • -
  • Write a completely new Object -Memory class.
  • -
  • Debug the new Object Memory, Interpreter and -BitBlt.
Compile the interpreter to make it practical: -
  • -Design a translator from a subset of Smalltalk-80 to C.
  • -Implement this translator.
  • Translate the virtual machine -to C and compile it.
  • Write a small C interface to the Mac -OS.
  • Run the compiled interpreter with the new image.
By -following this plan, facilities became available just as they -were needed. For example, the interpreter and object memory were -debugged using a temporary memory allocator that had no way to -reclaim garbage. However, since the system only executed a few -byte codes, it never got far enough to run out of memory. -Likewise, while the translator was being prepared, most of the -bugs in the interpreter and object memory were found and fixed by -running them in Smalltalk.

- -

It was easy to stay motivated, because -the virtual machine, running inside Apple Smalltalk, was actually -simulating the byte codes of the transformed image just five -weeks into the project. A week later, we could type "3 + -4" on the screen, compile it, and print the result, and the -week after that the entire user interface was working, albeit in -slow motion. We were writing the C translator in parallel on a -commercial Smalltalk, and by the eighth week, the first -translated interpreter displayed a window on the screen. Ten -weeks into the project, we "crossed the bridge" and -were able to use Squeak to evolve itself, no longer needing to -port images forward from Apple Smalltalk. About six weeks later, -Squeak's performance had improved to the point that it could -simulate its own interpreter and run the C translator, and Squeak -became entirely self-supporting.

- -

We attribute the speed with -which this initial work was accomplished to the Squeak -philosophy: do everything in Smalltalk so that each improvement -makes everything smaller, faster, and better. It has been a -pleasant revelation to work on such low-level system facilities -as real-time garbage collection and FM music synthesis from -within the comfort and convenience of the Smalltalk-80 language -and environment.

- -

Once we had a stable, usable interpreter, the -focus shifted from creation to evolution. Performance improved -steadily and support for color, image transforms, sound -synthesis, and networking were added. These improvements were -made incrementally, as the need arose, and in parallel with other -projects that relied on the stability of the virtual machine. Yet -despite the apparent risk of frequent changes to the VM, Squeak -has proven as dependable as most commercial Smalltalks we have -used. We attribute this success partly to our passion for design -simplicity but mostly to the strategy of implementing the virtual -machine in Smalltalk.

- -

The remainder of the paper discusses -various aspects of the Squeak implementation, its memory -footprint and performance, the evolution of its user community, -and plans for its future.

- -

The Interpreter

-

We knew that the -published Blue Book interpreter description would suffice to get -us started. Moreover, we were spared from the tedium of -transcription by Mario Wolczko, who had already keyed in the code -for use as an on-line reference source for a Smalltalk -implementation project at the University of Manchester.

- -

The -interpreter is structured as a single class that gets translated -to C along with the Object Memory and BitBlt classes. In -addition, a subclass (Interpreter Simulator) runs all the same -code from within a Smalltalk environment by supporting basic -mouse, file, and display operations. This subclass was the basis -for debugging the Squeak system into existence. All of this code -is included in the Squeak release and it can run its own image, -albeit at a snail's pace (every memory access, even in BitBlt, -runs a Smalltalk method). Having an interpreter that runs within -Smalltalk is invaluable for studying the virtual machine. Any -operation can be stopped and inspected, or it can be instrumented -to gather timing profiles, exact method counts, and other -statistics.

- -

Although we have constantly amended the interpreter -to achieve increasing performance, we have stayed pretty close to -the Blue Book message interface between the Interpreter and the -Object Memory. It is a testament to the original design of that -interface that completely changing the Object Memory -implementation had almost no impact on the Interpreter.

- -

The Object Memory

- -

The design of an object memory that is general and -yet compact is not simple. We all agreed immediately on a number -of parameters, though. For efficiency and scalability to large -projects, we wanted a 32-bit address space with direct pointers -(i.e., a system in which an object reference is just the address -of that object in memory). The design had to support all object -formats of our existing Smalltalk. It must be amenable to -incremental garbage collection and compaction. Finally, it must -be able to support the "become" operation (exchange -identity of two objects) to the degree required in normal -Smalltalk system operation. While anyone would agree that objects -should be stored compactly, every object in Smalltalk requires -the following "overhead" information:

  • Size of -the object in bytes: 24 bits or more,
  • Class of the object: -a full 32-bit object pointer,
  • Hash code for indexing -objects: at least 12 bits,
  • Format of the object, -specifying pointer or bits, indexable or not, etc.: 4 bits at -least,
  • ...and, of course, a few extra bits for storage -management needs.

- -

A simple approach would be to allocate three -full 32-bit words as the header to every object. However, in a -system of 40k objects, this cavalier expenditure of 500k bytes of -memory could make the difference between an undeployable -prototype and a practical application. Therefore, we designed a -variable-length header format which seldom requires more than a -single 32-bit word of header information per object. The format -is given in Tables 1 and 2.

-
- - - - - -
Table 1: Format of a Squeak object header
offsetcontents occurrence
-8 size in -words (30 bits), header type (2 bits) 1%
-4 full class pointer (30 bits), header type (2 bits) 18%
0 base header, as follows...
-storage management (3 bits)
-object hash (12 bits)
-compact class index (5 bits)
-object format field (4 bits, see below)
-size in words (6 bits)
-header type (2 bits)
100%


-
- - - - - - - - - - -
Table 2: Encoding of the object format field in -a Squeak object header
0 no fields
1 fixed pointer fields
2 indexable pointer fields
3 both fixed and indexable pointer fields
4 unused
5 unused
6 indexable word fields (no pointers)
7 unused
8-11 indexable byte fields (no pointers):
low 2 bits are -low 2 bits of size in bytes
12-15 compiled methods: low 2 bits -are low 2 bits of size in bytes.
- The number of literals is -specified in method header, followed by the indexable bytes that -store byte codes.
- -

Our design is based on the fact that most -objects in a typical Smalltalk image are small instances of a -relatively small number of classes. The 5-bit compact class index -field, if non-zero, is an index into a table of up to 31 classes -that are designated as having compact instances; the programmer -can change which classes these are. The 6-bit size field, if -non-zero, specifies the size of the object in words, -accommodating sizes up to 256 bytes (i.e., 64 words, with the -additional 2 bits needed to resolve the length of byte-indexable -objects encoded in the format field). With only 12 classes -designated as compact in the 1.18 Squeak release, around 81% of -the objects have only this single word of overhead. Most of the -rest need one additional word to store a full class pointer. Only -a few remaining objects (1%) are large enough to require a third -header word to encode their size, and this extra word of overhead -is a tiny fraction of their size.

- -

Storage Management

- -

Apple -Smalltalk had achieved good garbage collection behavior with a -simple two-generation approach similar to [Unga84]. At startup, -and after any full garbage collection (a mark and sweep of the -entire image), all surviving objects were considered to be old, -and all objects created subsequently (until the next full -collection) to be new. All pointer stores were checked and a -table maintained of "root" objects—old objects -that might contain pointers to new objects. In this way, an -incremental mark phase could be achieved by marking all new -objects reachable from these roots and sweeping the new object -area; unmarked new objects were garbage. Compaction was simple in -that system, owing to its use of an object table. Full garbage -collection was triggered either by an overflow of the roots -table, or by failure of an incremental collection to reclaim a -significant amount of space. That system was known to run -acceptably with less than 500k of free space and to perform -incremental reclamations in under 250 milliseconds on hardware of -the 80's (16MHz 68020).

- -

For Squeak, we determined to apply the -same approach to our new system of 32-bit direct pointers. We -were faced immediately with a number of challenges. First, we had -to write an in-place mark phase capable of dealing with our -variable-length headers, including those that did not have an -actual class pointer in them. Then there was the need to produce -a structure for remapping object pointers during compaction, -since we did not have the convenient indirection of an object -table. Finally there was the challenge of rectifying all the -object pointers in memory within an acceptable time.

- -

The -remapping of object pointers was accomplished by building a -number of relocation blocks down from the unused end of memory. A -thousand such blocks are reserved outside the object heap, -ensuring that at least one thousand objects can be moved even -when there is very little free space. However, if the object heap -ends with a free block, that space is also used for relocation -blocks. If there is not enough room for the number of relocation -blocks needed to do compaction in a single pass (almost never), -then the compaction may be done in multiple passes. Each pass -generates free space at the end of the object heap which can then -be used to create additional relocation blocks for the next pass.

- -

-One more issue remained to be dealt with, and that was support of -the become operation without an object table. (The Smalltalk -become primitive atomically exchanges the identity of two -objects; to Smalltalk code, each object appears to turn into, or -"become," the other.) With an object table, the become -primitive simply exchanges the contents of two object table -entries. Without an object table, it requires a full scan of -memory to replace every pointer to one object with a pointer to -the other. Since full memory scans are relatively costly, we made -two changes. First, we eliminated most uses of become in the -Squeak image by changing certain collection classes to store -their elements in separate Array objects instead of indexed -fields. However, become operations are essential when adding an -instance variable to a class with extant instances, as each -instance must mutate into a larger object to accommodate the new -variable. So, our second change was to restructure the primitive -to one that exchanges the identity of many objects at once. This -allows all the instances of a class to be mutated in a single -pass through memory. The code for this operation uses the same -technique and, in fact, the very same code, as that used to -rectify pointers after compaction.

- -

We originally sought to -minimize compaction frequency, owing to the overhead associated -with rectifying direct addresses. Our strategy was to do a fast -mark and sweep, returning objects to a number of free lists, -depending on size. Only when memory became overly fragmented -would we do a consolidating compaction.

- -

As we studied and -optimized the Squeak garbage collector, however, we were able -radically to simplify this approach. Since an incremental -reclamation only compacts the new object space, it is only -necessary to rectify the surviving new objects and any old -objects that point to them. The latter are exactly those objects -marked as root objects. Since there are typically just a few root -objects and not many survivors (most objects die young), we -discovered that compaction after an incremental reclamation could -be done quickly. In fact, due to the overhead of managing free -lists, it turned out to be more efficient to compact after every -incremental reclamation and eliminate free lists altogether. This -was especially gratifying since issues of fragmentation and -coalescing had been a burden in design, analysis, and coding -strategy.

- -

Two policy refinements reduced the incremental garbage -collection pauses to the point where Squeak became usable for -real-time applications such as music and animation. First, a -counter is incremented each time an object is allocated. When -this counter reaches some threshold, an incremental collection is -done even if there is plenty of free space left. This reduces the -number of new objects that must be scanned in the sweep phase, -and also limits the number of surviving objects. By doing a -little work often, each incremental collection completes quickly, -typically in 5-8 milliseconds. This is within the timing -tolerance of even a fairly demanding musician or animator.

- -

The -second refinement is to tenure all surviving objects when the -number of survivors exceeds a certain threshold, a simplified -version of Ungar and Jackson's feedback-mediated tenuring policy -[UnJa88]. Tenuring is done as follows. After the incremental -garbage collection and compaction, the boundary between the old -and new object spaces is moved up to encompass all surviving new -objects, as if a full garbage collection had just been done. This -"clears the decks" so that future incremental -compactions have fewer objects to process. Although in theory -this approach could hasten the onset of the next full garbage -collection, such full collections are rare in practice. In any -case, Squeak's relatively lean image makes full garbage -collections less daunting than they might be in a larger system; -a full collection typically takes only 250 milliseconds in -Squeak. We have been using this storage manager in support of -real-time graphics and music for over a year now with extremely -satisfactory results. In our experience, 10 milliseconds is an -important threshold for latency in interactive systems, because -most of the other critical functions such as mouse polling, sound -buffer output and display refresh take place at a commensurate -rate.

- -

BitBlt

- -

For BitBlt as well, we began with the Blue Book -source code. However, the Blue Book code was written as a -simulation in Smalltalk, not as virtual machine code to run on -top of the Object Memory. We transformed the code into the latter -form, made a few optimizations, and this sufficed to get the -first Squeak running. The special cases we optimized are:

  • -the case when there is no source (store constant),
  • the -case when there is no halftone (store unmasked),
  • the -horizontal inner loop (no partial word stores).

- -

Once Squeak -became operational, we immediately wanted to give it command over -color. We chose to support a wide range of color depths, namely: -1-, 2-, 4-, and 8-bit table-based color, as well as 16- and -32-bit direct RGB color (with 5 and 8 bits per color component -respectively). -

- -

It was relatively simple to extend the internal -logic of BitBlt to handle multiple pixel sizes as long as source -and destination bit maps are of the same depth. To handle -operations between images of different depth, we provided a -default conversion, and added an optional color map parameter to -BitBlt to provide more control when appropriate. The default -behavior is simply to extend smaller source pixels to a larger -destination size by padding with zeros, and to truncate larger -source pixels to a smaller destination pixel size. This approach -works very well among the table-based colors because the color -set for each depth includes the next smaller depth's color set as -a subset. In the case of RGB colors, BitBlt performs the -zero-fill or truncation independently on each color component.

- -

-The real challenge, however, involves operations between RGB and -table-based color depths. In such cases, or when wanting more -control over the color conversion, the client can supply BitBlt -with a color map. This map is sized so that there is one entry -for each of the source colors, and each entry contains a pixel in -the format expected by the destination. It is obvious how to work -with this for source pixel sizes of 8 bits or less (map sizes of -256 or less). But it would seem to require a map of 65536 entries -for 16 bits or 4294967296 entries for 32-bit color! However, for -these cases, Squeak's BitBlt accepts color maps of 512, 4096, or -32768 entries, corresponding to 3, 4, and 5 bits per color -component, and BitBlt truncates the source pixel's color -components to the appropriate number of bits before looking up -the pixel in the color map.

- -

Smalltalk to C Translation

- -

We have -alluded to the Squeak philosophy of writing everything in -Smalltalk. While the Blue Book contains a Smalltalk description -of the virtual machine that was actually executed at least once -to verify its accuracy, this description was meant to be used -only as an explanatory model, not as the source code of a working -implementation. In contrast, we needed source code that could be -translated into C to produce a reliable and efficient virtual -machine.

- -

Our bootstrapping strategy also depended on being able -to debug the Smalltalk code for the Squeak virtual machine by -running it under an existing Smalltalk implementation, and this -approach was highly successful. Being able to use the powerful -tools of the Smalltalk environment saved us weeks of tedious -debugging with a C debugger. However, useful as it is for -debugging, the Squeak virtual machine running on top of Smalltalk -is orders of magnitude too slow for useful work: running in -Squeak itself, the Smalltalk version of the Squeak virtual -machine is roughly 450 times slower than the C version. Even -running in the fastest available commercial Smalltalk, the Squeak -virtual machine running in Smalltalk would still be sluggish.

- -

The -key to both practical performance and portability is to translate -the Smalltalk description of the virtual machine into C. To be -able to do this translation without having to emulate all of -Smalltalk in the C runtime system, the virtual machine was -written in a subset of Smalltalk that maps directly onto C -constructs. This subset excludes blocks (except to describe a few -control structures), message sending, and even objects! Methods -of the interpreter classes are mapped to C functions and instance -variables are mapped to global variables. For byte code and -primitive dispatches, the special message dispatchOn:in: is -mapped to a C switch statement. (When running in Smalltalk, this -construct works by perform:-ing the message selector at the -specified index in a case array; since a method invocation is -much less efficient than a branch operation, this dispatch is one -of the main reasons that the interpreter runs so much faster when -translated to C).

- -

The translator first translates Smalltalk into -parse trees, then uses a simple table-lookup scheme to generate C -code from these parse trees. There are only 42 transformation -rules, as shown in Table 3. Four of these are for integer -operations that more closely match those of the underlying -hardware, such as unsigned shifts, and the last three are macros -for operations so heavily used that they should always be -inlined. All translated code accesses memory through six C macros -that read and write individual bytes, 4-byte words, and 8-byte -floats. In the early stages of development, every such reference -was checked against the bounds of object memory.

- -
- -
Table 3: Operations of primitive Smalltalk
-
& | and: or: not
-+ - * // \\ min: max:
-bitAnd: bitOr: bitXor: bitShift:
-< <= = > >= ~= ==
-isNil notNil
-whileTrue: whileFalse: to:do: to:by:do:
-ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:
-at: at:put:
-<< >> bitInvert32 preIncrement integerValueOf:
-integerObjectOf: isIntegerObject: 
- - -

Our -first translator yielded a two orders of magnitude speedup -relative to the Smalltalk simulation, producing a system that was -immediately usable. However, one further refinement to the -translator yielded a significant additional speedup: inlining. -Inlining allows the source code of the virtual machine to be -factored into many small, precisely defined methods—thus -increasing code-sharing and simplifying debugging—without -paying the penalty in extra procedure calls. Inlining is also -used to move the byte code service routines into the interpreter -byte code dispatch loop, which both reduces byte code dispatch -overhead and allows the most critical VM state to be kept in -fast, register-based local variables. All told, inlining -increases VM performance by a factor of 3.4 while increasing the -overall code size of the virtual machine by only 13%.

- -

Sound

- -

-Several of us were involved in early experiments with computer -music editing and synthesis [Saun77], and it was a disappointment -to us that the original Smalltalk-80 release failed to -incorporate this vital aspect of any lively computing -environment. We determined to right this wrong in the Squeak -release.

- -

Early on, we implemented access to the Macintosh sound -driver. As the performance of the Squeak system improved, we were -delighted to find that we could actually synthesize and mix -several voices of music in real time using simple wave table and -FM algorithms written entirely in Smalltalk.

- -

Nonetheless, these -algorithms are compute-intensive, and we used this application as -an opportunity to experiment with using C translation to improve -the performance of isolated, time-critical methods. Sound -synthesis is an ideal application for this, since nearly all the -work is done by small loops with simple arithmetic and array -manipulation. The sound generation methods were written so that -they could be run directly in Smalltalk or, without changing a -line of code, translated into C and linked into the virtual -machine as an optional primitive. Since the sound generation code -had already been running for weeks in Smalltalk, the translated -primitives worked perfectly the first time they ran. Furthermore, -we observed nearly a 40-fold increase in performance: from 3 -voices sampled at 8 KHz, we jumped to over 20 voices sampled at -44 KHz.

- -

WarpBlt

- -

As we began doing more with general rotation and -scaling of images, we found ourselves dissatisfied with the slow -speed of non-integer scaling and image rotations by angles other -than multiples of 90 degrees. To address this problem in a simple -manner, we added a "warp drive" to BitBlt. WarpBlt -takes as input a quadrilateral specifying the traversal of the -source image corresponding to BitBlt's normal rectangular -destination. If the quadrilateral is larger than the destination -rectangle, sampling occurs and the image is reduced. If the -quadrilateral is smaller than the destination, then interpolation -occurs and the image is expanded. If the quadrilateral is a -rotated rectangle, then the image is correspondingly rotated. If -the source quadrilateral is not rectangular, then the -transformation will be correspondingly distorted.

- -

Once we started -playing with arbitrarily rotated and scaled images, we began to -wish that the results of this crude warp were not so jagged. This -led to support for over sampling and smoothing in the warp drive, -which does a reasonable job of anti-aliasing in many cases. The -approach is to average a number of pixels around a given source -coordinate. Averaging colors is not a simple matter with the -table-based colors of 8 bits or less. The approach we used is to -map from the source color space to RGB colors, average the -samples in RGB space, and map the final result back to the -nearest indexed color via the normal depth-reducing color map.

- -

As -with the sound synthesis work, WarpBlt is completely described in -Smalltalk, then translated into C to deliver performance -appropriate to interactive graphics.

- -

Code Size and Memory Footprint

- -

Table 4 gives the approximate size of the main -components of Squeak in lines of code, based on version 1.18 of -December, 1996. Our measurement includes all comments, but -excludes all blank lines. We present these statistics not as -rigorous measurement, but more as an order-of-magnitude gauge. -For instance, the entire virtual machine is approximately 100 -pages. Of that, 6547 lines are in Smalltalk (translator not -included) versus 1681 lines of OS interface in C that may need to -be altered for porting.

-
- - - - -
Table 4: Lines of code in Squeak VM
SmalltalkLines C Lines
Interpreter3951OS interface 1681
Object Memory 1283
BitBlt with Warp 1313
- -

The size of the 1.18 Squeak release -image, with all development support, including browsers, -inspectors, performance analyzers, color graphics, and music -support is 968K bytes on the Macintosh. The code for the virtual -machine, simulator, and Smalltalk-to-C translator, which are only -needed by those engaged in virtual machine development, adds 290K -to this figure. The interpreter, when running, requires 300K on a -Power PC Macintosh, and the entire Smalltalk environment runs -satisfactorily with as little as 200K of free space available. In -monochrome, the system runs comfortably in 1.8 MB. We distribute -a 650K image with the complete development environment that runs -in less than 1MB on the Cassiopeia hand held computer.

- -

Performance and Optimization

- -

Thanks to today's fast processors, -Squeak's performance was satisfactory from the moment the -translator produced its first C translation of the virtual -machine. Since this debut, Squeak's performance has improved -steadily, and the current version, 1.18, executes about four -million byte codes or 173 thousand message sends per second on a -110 MHz Power PC Mac 8100. Table 5 shows the improvement in -Squeak's performance over its first year. Two simple benchmarks -from the release were used to track the approximate byte code -execution rate ("10 benchmark") and the cost of full -method activation and return ("26 benchFib"). Note that -the latter benchmark measures the worst case; not all message -sends require a full activation.

-
- - - - - - - - - -
Table 5: Squeak performance over time
Date byte codes/sec sends/sec
Apr. 14 458K 22,928
May 20 1,111K 60,287
May 23 1,522K 69,319
July 9 2,802K 134,717
Aug. 1 2,726K 130,945
Sept. 23 3,528K 141,155
Nov. 12 3,156K 133,164
Dec. 12 3,410K 169,617
Jan. 21 4,108K 173,360
- -

The rapid -early leaps in performance were due partly to removal of -scaffolding—such as assertion checks and range checks on -memory references—and partly to improving the runtime model -of the translator. For example, object references were originally -represented as offsets relative to the base of the object memory -rather than as true direct pointers. After May, however, the easy -changes had all been made and improvements came in smaller -increments, sometimes only a few percent at a time. The most -significant of these optimizations include:

  • recycling -method contexts (this cut the allocation rate by a factor of 10) -
  • managing the frequency of checks for user and timer -interrupts
  • keeping the instruction and stack pointers (IP -and SP) in registers
  • making the IP and SP be direct -pointers, rather than offsets into their base object
  • -patching the dispatch loop to eliminate an unneeded -compiler-generated range check
  • eliminating store-checks -when storing into the active and home contexts
  • comparing -small integers as oops rather than converting them into integers -first
  • peeking for and doing a jump-if-false byte code that -follows a compare

- -

Table 6 compares Squeak's current performance -over a small suite of benchmarks with that of several commercial -Smalltalk implementations that cover a cross-section of -implementation technologies, including a bytecode interpreter -similar to the original Smalltalk-80 virtual machine (Apple -Smalltalk), an aggressively optimized interpreter (ST/V Mac 1.1), -and two implementations using dynamic translation to native code -(ParcPlace Smalltalk 2.3 and 2.5). In order to draw meaningful -comparisons between Squeak and these 68K-based virtual machines, -all timings except those in the last column were taken on a Duo -230 (33Mhz 68030). Since Squeak runs significantly better on -modern processors with instruction caches and a generous supply -of registers, the final column of the table, SqueakPPC, shows -Squeak's performance relative to C on a Power PC-based Macintosh.

- -
- - - - - - - - - - -
Table 6: Virtual machine -performance relative to optimized, platform-native C for various -benchmarks. Smaller numbers are better. A result of 1.0 would -indicate that a benchmark ran exactly as fast as optimized C.
AppleST ST/V PP2.3 PP2.5 Squeak SqueakPPC
IntegerSum 185.00 32.00 7.58 6.92 62.34 72.56
VectorSum 99.00 30.0010.3011.5061.7041.01
PrimeSieve 53.00 40.0016.0712.1070.5351.57
BubbleSort 88.23 35.2921.3513.9880.2963.12
TreeSort 43.90 5.0020.291.9816.337.31
MatrixMult 40.79 6.0022.802.9418.0036.74
Recurse 28.26 9.473.732.0850.2635.19
- -

So -far in the design of Squeak, we have emphasized simplicity, -portability, and small memory footprint over high performance. -Much better performance is possible. The PP2.3 and PP2.5 columns -of Table 6 are examples of Deutsch-Schiffman-style dynamic -translation (or "JIT") virtual machines [Deut84]. -Dynamic translation avoids the overhead of byte code dispatch by -translating methods into native instructions kept in a -size-bounded cache. The Self project [ChUn91] [H?lz94] broke new -ground in high performance by investing more compilation time in -heavily used methods, using inlining to eliminate expensive calls -and enable further optimizations. This work, which was later -extended to Smalltalk and Java [Anim96], shows that one can -obtain performance approaching half the speed of optimized C -without compromising the semantics of a clean language. -Unfortunately both of these approaches have resulted in virtual -machine implementations that are, by Squeak standards, -unapproachable and difficult to port.

- -

We believe that Squeak can -enjoy the same performance as commercial Smalltalk -implementations without compromising malleability and -portability. In our experience the byte code basis of the -Smalltalk-80 standard [Inga78] is hard to beat for compactness -and simplicity, and for the programming tools that have grown -around it. Therefore dynamic translation is a natural avenue to -high performance. The Squeak philosophy implies that both the -dynamic translator and its target code sequences should be -written and debugged in Smalltalk, then automatically translated -into C to build the production virtual machine. By representing -translated methods as ordinary Smalltalk objects, experiments -with Self-style inlining and other optimizations could be done at -the Smalltalk level. This approach is currently being explored as -a way to improve Squeak's performance without adversely affecting -its portability.

- -

The Squeak Community

- -

As exciting as the day the -interpreter first ran, was the day we released Squeak to the -Internet community. In the back of our minds, we all felt that we -were finally doing, in September of 1996, what we had failed to -do in 1980. However, the code we released ran only on the -Macintosh and, although we had worked hard to make it portable, -we did not know if we had succeeded.

- -

Three weeks later, we -received a message announcing Ian Piumarta's first UNIX port of -Squeak. He had ported it to seven additional UNIX platforms two -weeks later. At the same time, Andreas Raab announced ports of -Squeak for Windows 95 and Windows NT. Neither of these people had -even contacted us before starting their porting efforts! A mere -five weeks after it was released, Squeak was available on all the -major computing platforms except Windows 3.1, and had an active -and rapidly growing mailing list. Since that time, Squeak ports -have been done for Linux, the Acorn RISC, and Windows CE, and -several other ports are underway.

- -

The Squeak release, including -the source code for the virtual machine, C translator and -everything else described in this paper, as well as all the ports -mentioned above, is available through the following sites: -<http://www.research.apple.com/research/proj/learning_concepts/squeak/> -<ftp://ftp.create.ucsb.edu> -<ftp://alix.inria.fr> -<ftp://ftp.cs.uni-magdeburg.de/pub/ Smalltalk/free/squeak> -

- -

The Squeak license agreement explicitly grants the right to use -Squeak in commercial applications royalty-free. The only -requirement in return is that any ports of Squeak or changes to -the base class library must be made available for free on the -Internet. New applications and facilities built on Squeak do not -need to be shared. We believe that this licensing agreement -encourages the continued development and sharing of Squeak by its -user community.

- -

Related Work

- -

For the Smalltalk devotee, nothing -is more natural than the desire to attack all programming -problems with Smalltalk. Thus, there has long been a tradition of -using Smalltalk to describe and debug a low-level system before -its final implementation. As mentioned earlier, the Blue Book -used Smalltalk as a high-level description of a Smalltalk virtual -machine, and this description was actually checked for accuracy -by running it. In LOOM [Kaeh86], the kernel of a virtual object -memory was written and executed in a separate, simplified -Smalltalk virtual machine whenever an "object fault" -occurred. For better performance, this kernel was later -translated into BCPL semi-automatically, then fixed up by hand. -This experience planted the seed for the approach taken in Squeak -two decades later.

- -

A number of recent systems translate complete -Smalltalk programs into lower-level languages to gain speed, -portability, or application packaging advantages. Smalltalk/X -[Gitt95] and SPiCE [YaDo95] generate C code from programs using -the full range of Smalltalk semantics, including blocks. Babel -[MWH94] translates Smalltalk applications into CLOS, and includes -a facility for automatically winnowing out unused classes and -methods.

- -

Producer [Cox87] translated Smalltalk programs into -Objective C, but required the programmer to supply type -declarations and rules for mapping dynamically allocated objects -such as Points into Objective C record structures. Producer only -supported a subset of Smalltalk semantics because it depended on -the Objective C runtime and thus did not support blocks as -first-class objects. Squeak's Smalltalk-to-C translator restricts -the programmer to an even more limited subset of Smalltalk, but -that subset closely mirrors the underlying processor -architecture, allowing the translated code to run nearly as -efficiently as if it were written in C directly. The difference -arises from a difference in goals: The goal of Squeak's -translation is merely to support the construction of its own -virtual machine, a much simpler task than translating full-blown -Smalltalk programs into C. Squeak's translator is more in the -spirit of QUICKTALK [Ball86], a system that used Smalltalk to -define new primitive methods for the virtual machine. Another -Smalltalk-to-primitive compiler, Hurricane [Atki86], used a -combination of user-supplied declarations and simple type -inference to eliminate class checks and to inline integer -arithmetic. Unlike Squeak's translator, Hurricane allowed the -programmer to also use polymorphic arithmetic in the Smalltalk -code to be translated. Neither QUICKTALK nor Hurricane attempted -to produce an entire virtual machine via translation.

- -

Type -information can help a translator produce more efficient code by -eliminating run-time type tests and enabling inlining. Typed -Smalltalk [JGZ88] added optional type declarations to Smalltalk -and used that type information to generate faster code. The -quality of its code was comparable to that of QUICKTALK but, to -the best of the authors' knowledge, the project's ultimate goal -of producing a complete, stand-alone Smalltalk virtual machine -was never realized. A different approach is to use type -information gathered during program execution to guide on-the-fly -optimization, as done in the Self [ChUn91] [H?lz94] and -Animorphic [Anim96] virtual machines. Note that using types for -optimization is independent of whether the programming language -has type declarations. The Self and Animorphic virtual machines -use type information to optimize declaration-free languages -whereas Strongtalk [BrGr93], which augments Smalltalk with an -optional type system to support the specification and -verification of interfaces, ran on a virtual machine that knew -nothing about those types. The subset of Smalltalk used for the -Squeak virtual machine maps so directly to the fundamental data -types of the hardware that the translator would not benefit from -additional type information. However, we have contemplated -building a separate primitive compiler that supports polymorphic -arithmetic, in which case the declaration-driven optimization -techniques of Hurricane and Typed Smalltalk would be beneficial. -

- -

Future Work

- -

Work on Squeak continues. We are overhauling Squeak's -graphics model to supplant the MVC model with a new one along the -lines of Morphic [Malo95] and Fabrik [Inga88]. We also plan to -complete Squeak's sound and music facilities by adding sound -input and MIDI input and output.

- -

We are collaborating with Ian -Piumarta to produce a dynamic translation engine for Squeak, -inspired by Eliot Miranda's BrouHaHa Smalltalk [Mira87] and his -later work with portable threaded code. A top priority is to -build the entire engine in Smalltalk to keep it entirely -portable.

- -

Just as we wanted Squeak to be endowed with music and -sound capability, we also wanted it to be easily interconnected -with the rest of the computing world. To this end, we are adding -network stream and datagram support to the system. While not yet -complete, the current facilities already support TCP/IP clients -and servers on Macintosh and Windows 95/NT, with UNIX support to -follow soon.

- -

Conclusions

- -

As far as we know, Squeak is the first -practical Smalltalk system written in itself that is complete and -self-supporting. Squeak runs the Smalltalk code describing its -own virtual machine fast enough for debugging purposes: although -it requires some patience, one can actually interact with menus -and windows in this mode. This is no mean feat, considering that -every memory reference in the inner loop of BitBlt is running in -Smalltalk.

- -

To achieve useful levels of performance, the Smalltalk -code of the virtual machine is translated into C, yielding a -speedup of approximately 450. Part of this performance gain, a -factor of 3.4, can be attributed to the inlining of function -calls in the translation process. The translator can also be used -to generate primitive methods for computationally intensive inner -loops that manipulate fundamental data types of the machine such -as bytes, integers, floats, and arrays of these types.

- -

The Squeak -virtual machine, since its source code is publicly available, -serves as an updated reference implementation for Smalltalk-80. -This is especially valuable now that the classic Blue and Green -Books [Gold83] [Kras83] are out of print. A number of design -choices made in the Blue Book that were appropriate for the -slower speed and limited address space of the computer systems of -the early 1980's have been revisited, especially those relating -to object memory and storage reclamation. Squeak also updates the -multimedia components of this reference system by adding color -support and image transformation capabilities to BitBlt and by -including sound output. While Squeak is not the first Smalltalk -to use modern storage management or to support multimedia, it -makes a valuable contribution by delivering these capabilities in -a small one-language package that is freely available, and that -runs identically on all platforms.

- -

Final Reflections

- -

While we -considered using Java for our project, we still feel that -Smalltalk offers a better environment for research and -development. At a time when the world is moving toward native -host widgets, we still feel that there is power and inspiration -in having all of the code for every aspect of computation and -display be immediately accessible, changeable, and identical -across platforms. Finally, when most development environments -fill 100 megabytes of disk space or more, Squeak is a portable, -malleable, full-service computing environment, including -browsing, split-second recompilation, and source debugging tools, -all in a 1-megabyte footprint. Though many of its strengths are -rooted in the past, Squeak is suited to the intimate computing -potential of PDAs and the Internet, and our work is, now more -than ever, inspired by the future.

- -

Acknowledgments

- -

The authors -wish to acknowledge the support of Apple Computer throughout this -project, especially Jim Spohrer, Don Norman, and Elizabeth Greer. -We especially appreciate their wisdom in seeing that Squeak would -be worth more if it were made freely available. We also wish to -thank the entire Squeak community for their encouragement and -support, especially those who have submitted code or donated -their time and energy to maintaining Squeak ports and the Squeak -mailing list and web sites.

- -

References

- -

-[Anim96] Animorphic Systems, Exhibit at OOPSLA '96. 
-         Animorphic Systems was a small company that included
-         several members of the Self team and
-         produced extremely high performance virtual machines for
-         Smalltalk and Java. The company has since been purchased by Sun
-         Microsystems. 
-
-[Atki86] Atkinson, R., "Hurricane: An Optimizing Compiler for Smalltalk,"
-         Proc. of the ACM OOPSLA '86 conf., September 1986, pp. 151-158.
-
-[BrGr93] Bracha, G. and Griswold, D., "Strongtalk: Typechecking Smalltalk
-         in a Production Environment," Proc. of the ACM OOPSLA '93 conf.,
-         September 1993.
-
-[Ball86] Ballard, M., Maier, D., and Wirffs-Brock, A., 
-         "QUICKTALK: A Smalltalk-80 Dialect for
-         Defining Primitive Methods," Proc. of the ACM OOPSLA '86
-         conf., September 1986, pp. 140-150. 
-
-[ChUn91] Chambers, C. and Ungar, D., "Making Pure 
-         Object-Oriented Languages Practical," Proc. of the ACM OOPSLA
-         '91 conf., November 1991, pp. 1-15. 
-
-[Cox87]  Cox, B. and Schmucker, K.,
-         "Producer: A Tool for Translating Smalltalk-80 to
-         Objective-C," Proc. of the ACM OOPSLA '87 conf., October
-         1987, pp. 423-429.
-
-[Deut84] Deutsch, L., and Schiffman, A.,
-         "Efficient Implementation of the Smalltalk-80 System,"
-         Proc. 11th ACM Symposium on Principles of Programming Languages,
-         January 1984, pp. 297-302.
-
-[Gitt95] Gittinger, Claus,
-         Smalltalk/X, ,http://www.informatik.uni-stuttgart.de/stx/stx.html 1995.
-
-[Gold83] Goldberg, A. and Robson, D., Smalltalk-80: The Language and Its
-         Implementation, Addison-Wesley, Reading, MA,1983.
-
-[H?lz94] H?lzle, U., Adaptive optimization for Self: Reconciling High
-         Performance with Exploratory Programming, Ph.D. Thesis, Computer
-         Science Department, Stanford University, 1994.
-
-[Inga78] Ingalls, D., "The Smalltalk-76 Programming System, Design and
-         Implementation" Proc. 5th ACM Symposium on Principles of
-         Programming Languages, Tucson, January 1978.
-
-[Inga88] Ingalls, D., Wallace, S., Chow, Y., Ludolph, F., and Doyle, K.,
-         "Fabrik: A Visual Programming Environment," Proc. of
-         the ACM OOPSLA '88 conf., September 1988, pp. 176-190.
-
-[JGZ88]  Johnson, R., Graver, J., and Zurawski, L.,"TS: An Optimizing
-         Compiler for Smalltalk," Proc. of the ACM OOPSLA '88 conf.,
-         September 1988, pp. 18-26.
-
-[Kaeh86] Kaehler, Ted, "Virtual
-         Memory on a Narrow Machine for an Object-Oriented Language,"
-         Proc. of the ACM OOPSLA '86 conf., September 1986, pp. 87-106.
- 
-[Kras83] Krasner, G., ed., Smalltalk-80, Bits of History, Words
-         of Advice, Addison-Wesley, Reading, MA,1983.
-
-[Malo95] Maloney, J. and Smith, R., "Directness and Liveness
-         in the Morphic User Interface Construction Environment," 
-         UIST '95, November 1995.
-
-[Mira87] Miranda, E., "BrouHaHa—A Portable
-         Smalltalk Interpreter," Proc. of the ACM OOPSLA '87 conf.,
-         October 1987, pp. 354-365.
-
-[MWH94] Moore, I., Wolczko, M., and
-        Hopkins, T., "Babel—A Translator from Smalltalk into
-        CLOS," TOOLS USA 1994, Prentice Hall, 1994.
-
-[Saun77] Saunders, S., "Improved FM Audio Synthesis Methods for
-         Real-time Digital Music Generation," in Computer Music
-         Journal 1:1, February 1977. Reprinted in Computer Music, Roads,
-         C. and Strawn, J., eds., MIT Press, Cambridge, MA, 1985.
-
-[Unga84] Ungar, D.,"Generation Scavenging: A Non-Disruptive High
-         Performance Storage Reclamation Algorithm," Proc. ACM
-         Symposium on Practical Software Development Environments, April
-         1984, pp. 157-167. Also published as ACM SIGPLAN Notices 19(5),
-         May 1984 and ACM Software Engineering Notes 9(3), May 1984.
-
-[UnJa88] Ungar, D. and Jackson, F.,"Tenuring Policies for
-         Generation-Based Storage Reclamation," Proc. of the ACM
-         OOPSLA '88 conf., September 1988, pp. 18-26.
-
-[YaDo95] Yasumatsu, K. and Doi, N., "SPiCE: A System for Translating
-         Smalltalk
-          Programs Into a C Environment," IEEE Transactions on
-          Software Engineering 21(11), 1995, pp. 902-912.
- - Modified: pypy/trunk/doc/funding/makedoc/format.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/format.py (original) +++ pypy/trunk/doc/funding/makedoc/format.py Tue Oct 7 20:13:35 2003 @@ -249,7 +249,7 @@ def changeStyle(txt): txt = str(cut(txt)) - txt = str(replaceMargin(txt)) + #txt = str(replaceMargin(txt)) # not correct yet txt = str(format(txt)) return txt Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Tue Oct 7 20:13:35 2003 @@ -166,6 +166,12 @@ if name.startswith("wp-") and name.endswith(".asc"): tempfile(name, "w").write(file(os.path.join("..", name)).read()) +def copy_binfiles(): + for name in os.listdir(".."): + if name.endswith(".png"): + # note that we don't clear these + file(name, "wb").write(file(os.path.join("..", name), "rb").read()) + def create_oo_doc(): from win32com.client import Dispatch objServiceManager= Dispatch("com.sun.star.ServiceManager") @@ -183,6 +189,7 @@ def make_doc(): build_xref_file() copy_ascfiles() + copy_binfiles() names = get_file_list() make_new_files(names) make_doc_list(names) Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From ale at codespeak.net Tue Oct 7 22:10:54 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Tue, 7 Oct 2003 22:10:54 +0200 (MEST) Subject: [pypy-svn] rev 1613 - pypy/trunk/doc/funding_retarget Message-ID: <20031007201054.4079D5BA05@thoth.codespeak.net> Author: ale Date: Tue Oct 7 22:10:53 2003 New Revision: 1613 Modified: pypy/trunk/doc/funding_retarget/abstract.txt Log: Alex and Anna's version 1998 chars! Modified: pypy/trunk/doc/funding_retarget/abstract.txt ============================================================================== --- pypy/trunk/doc/funding_retarget/abstract.txt (original) +++ pypy/trunk/doc/funding_retarget/abstract.txt Tue Oct 7 22:10:53 2003 @@ -1,47 +1,31 @@ - This proposal directly addresses the Strategic Objective - IST-2002-2.3.2.3 - 'Open development platforms for software and - services' of the Second Call of the Information Society - Technologies Workprogramme. - - - The PyPy project will build a flexible, modular, context-aware, - self-hosting programming platform. The goal is to finally deliver on - the promises of Very-High Level Languages (VHLL) to produce significant - productivity gains to the software industry. +The PyPy project will build an Open Source, portable, context-aware, self-hosting +programming platform supporting Very-High Level Languages (VHLL) yielding +significant productivity gains in software development. PyPy's flexible +and modular runtime system will be well-suited for developing and deploying +networked, embedded, and mobile devices. - To fullfill this ambitious goal, the innovative concept of ObjectSpaces - will be a key technology. ObjectSpaces are high level formulations of - the parts that make a language interpreter work (compiler, object library, - main loop). The separation will enable modularity and flexibility of the - interpreter. As the ObjectSpaces themselves are written in a VHLL it is - possible to make ObjectSpaces specializing for execution speed, memory - consumption, target processors etc. - - PyPy will be portable, interpreted, object-oriented, Free/Open - Source Very-High Level Language, with a wide range of applications. +PyPy's key technology is the innovative concept of ObjectSpaces, high-level +formulations of language interpreter components. Explicit and clear separation +of parts will give the interpreter modularity and flexibility. Since +ObjectSpaces are coded in a VHLL, they can be specialized for execution speed, +memory consumption, native-code generation, execution-tracing and debugging, etc. - Creating PyPy will take advantage of the known European strengths - in formal methods and languages. It will go beyond the state of the Art - in computer languages, and produce a runtime system which is much - better suited for the development and deployment of networked, - embedded, and mobile devices. +Hosting and target language for PyPy will be Python, first developed in 1990 at +CWI (Centrum voor Wiskunde en Informatica) in the Netherlands. Python, current +version 2.3.2, is released under the Python Software Foundation License, +approved by both the Open Source Initiative and the Free Software Foundation. - Considerable effort will be made to disseminate this knowledge,among - academics, SMEs, Industrial users, and through our Open website and - mailing lists, any interested person. This will ensure that the project - will be fully exploited upon completion. - - The target language for PyPy has been choosen to be Python (a portable, - Open Source language was first developed in 1990 at CWI, Centrum voor - Wiskunde en Informatica, in the Netherlands.) The most recent version of - Python is Python 2.3.2 released under the Python Software Foundation - License, approved by both the Open Source Initiative, and the Free - Software Foundation. - - As foundational applied research, focusing on fundamental design - concepts, there will be significant indirect effects wherever the - Python programming langauge is taught or deployed. Python is - widely used as a 'first programming language' and has been very - successful among non-programmers, particularily women. The - success of Python can therefore have a limited effect in - promoting social cohesion and gender equality. \ No newline at end of file +PyPy will leverage known European strengths in formal methods and languages, +operating by a novel Agile Software Development methodology for distributed +development, including short, high-productivity meetings known as "Sprints". +Systematic efforts to spread the knowledge produced by the project among +academics, SMEs, industry, and other interested parties, will ensure the +project's results and achievements are fully exploited upon completion. + +The PyPy project's foundational applied research will provide indirect benefits +wherever Python is taught, used, deployed. Python is widely taught as a first +programming language. Emphasizing simplicity and clean syntax, Python has wider +appeal, particularly among women, than languages requiring extensive mathematics +or informatics backgrounds. Enhancing Python's applicability to include +networked, embedded and mobile devices can thus have some positive effect in +promoting social cohesion and gender equality. \ No newline at end of file From hpk at codespeak.net Tue Oct 7 22:24:36 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 7 Oct 2003 22:24:36 +0200 (MEST) Subject: [pypy-svn] rev 1614 - pypy/trunk/doc/funding Message-ID: <20031007202436.D20805BA05@thoth.codespeak.net> Author: hpk Date: Tue Oct 7 22:24:36 2003 New Revision: 1614 Modified: pypy/trunk/doc/funding/B5.0_management.txt Log: a first go at the management section (where i had a FIXME tag). please note that i put everything into the B5.0_management part for the time beeing. I suggest to roll all B5.* sections into one document as this makes it easier to move around stuff. If this is somehow not applicable then the paragraphs need to be moved to different files, i guess. This is a checkin to gather more feedback. Modified: pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_management.txt (original) +++ pypy/trunk/doc/funding/B5.0_management.txt Tue Oct 7 22:24:36 2003 @@ -2,35 +2,108 @@ B.5 Project management -Describe the organisation, management and decision making structures -of the project. Describe the plan for the management of knowledge, of -intellectual property and of other innovation-related activities -arising in the project. +DESCRIBE THE ORGANISATION, MANAGEMENT AND DECISION MAKING STRUCTURES +OF THE PROJECT. DESCRIBE THE PLAN FOR THE MANAGEMENT OF KNOWLEDGE, OF +INTELLECTUAL PROPERTY AND OF OTHER INNOVATION-RELATED ACTIVITIES +ARISING IN THE PROJECT. (Recommended length ? three pages) :DELETE:END + Project Management ===================== -add text! +FIXME probably some overview-preamble here, i can't write about the +financial managment. holger. + +Technical development driven by discussion and feedback +------------------------------------------------------- -FIXME_LAURA FIXME_JACOB FIXME_HOLGER This is the section that needs the -longest about Sprints... Also need to say that we have made a working -prototype, have worked together before, - -B.5 Project management - -Describe the organisation, management and decision making structures -of the project. Describe the plan for the management of knowledge, of -intellectual property and of other innovation-related activities -arising in the project. (Recommended length ? three pages) - -This section should describe how the proposed project will be managed, -the decision making structures to be applied, the communication flow -within the consortium and the quality assurance measures which will be -implemented, and how legal and ethical obligations will be met. +The technical development of PyPy is driven by open continous discussion. +Many of the involved decisions are made and verified during one-week +working meetings, so called "sprints". Members from the larger Python +software community are publicly invited and have the chance to interact +and work with the PyPy developers or become one themselves. Mailing lists, +chat-sessions, Wikis and notification of program changes provide a constant +flow of information between PyPy project members and the wider community. +Therefore conflicts out of missing information or due to +misunderstandings will be minimized. + +As the PyPy researchers and developers fully interact with a wider +research and software audience, we expect to often present reports +and scientific papers on major conferences. + + +Technical decisions +------------------- + +Major design or technical decisions are usually reached through consensus +during the sprints. If a conflict cannot be resolved there then the technical +board gets the final say. The members of the technical board are appointed by +a vote of everyone who has commit rights to the source repository. However, +it is expected that design and implementation choices will usually be +determined by consensual agreement or by informal votes on the development +mailing list. This is common practice within the Python and many others free +softare communities. Also, the PyPy developers and researchers will construct +few if any formal hierarchies between them. Constantly working together with +agile methodologies and the visilibity of each individual contribution help +enforce high-quality program code and good design decisions. + + +Intellectual property +--------------------- + +The public availability of the source code at all times together with a +very open and flexible license (the MIT-license) provide the basis to exchange +ideas, contribute to the project or reuse all parts of it from the start. +In return, this provides the developers with fast feedback +and improvements with respect to their current developments. At the heart of a +free software community lies open communication, the free flow of information +and organizing shared interests. The PyPy project is already fully involved and +based on these principles. Finally, every contributor is fully responsible for not +introducing any program code which might infringe third party copyright or patents. + + +The quality +----------- + +The PyPy project will ensure quality by a variety of means. On the grand +scale, the involvement of excellent researchers ensures that the general +direction takes care of latest insights in language research. Moreover, +we will publish our research results on conferences and to scientific +and free software communities. This forms the basis to maintain a high-quality +general technical direction. + +The developers deploy agile methodologies like unittest-driven development +and pair-programming. By the end of the project we expect to have produced +more than 3000 unittests testing every aspect of the runtime system. The +presence of such tests also allows to rapidly change parts of the implementation +without fear of breaking functionality elsewhere. We also plan to release +our runtime system often and thus gather additional feedback from early +adopters, developers and researchers. + +To support the open development we base all of our documents, source +code and website information on a version control system. In combintation +with a notification on all changes this ensures that all interested parties +can review and react to developments. + +The PyPy developers have produced a working prototype within four one-week +sprints and a little development in between. The code and design quality +of the project is already widely accepted. There are now 400 unittests. +As a consequence, Guido van Rossum, the inventor and maintainer of today's +Python, listed is as the number one project he would like to succeed. He +previously attended one of our sprints and got deeply involved with our +architecture and source code which he immediately found intuitive to work with. + +Thus we believe that our choices for quality management are fit to meet +highest standards. + + +FIXME Jacob (holger) the financial and management interfacing with +the EU needs to be described. Then the different parts need to +be structured in a resonable way. Quality of the management From hpk at codespeak.net Tue Oct 7 23:13:36 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 7 Oct 2003 23:13:36 +0200 (MEST) Subject: [pypy-svn] rev 1615 - pypy/trunk/doc/funding Message-ID: <20031007211336.969CD5BA05@thoth.codespeak.net> Author: hpk Date: Tue Oct 7 23:13:35 2003 New Revision: 1615 Modified: pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Log: a first go at the integration+config package like requested. Modified: pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Tue Oct 7 23:13:35 2003 @@ -22,30 +22,46 @@ **Objectives** -FIXME_HOLGER write me - -Develop tools that will allow to chose from available features -to build a custom interpreter integrating selected capabilities. +Integrate research and the source code from wp06_, wp07_, wp08_ and wp09_ into +a consistent code base. Analyse and fix remaining problems. Develop tools that will +allow to chose from available features and runtime restrictions to build +a custom PyPy version. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -FIXME_HOLGER write me +**Task 1** + +Analyse and integrate all results from the results of other workpackages. +This involves identifying and resolving conflicts which could prevent +a combintation of desired optimization goals. + +**Task 2** + +Implement user interfaces to select features and runtime restrictions. +Provide a way to automatically build a PyPy custom version for different +memory, performance and extension requirements. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -FIXME_HOLGER write me +- DL01: A release of PyPy with all available optimization and runtime features. + . +- DL02: a build- and configuration tool that allows to build custom PyPy versions + suitable for specialized environments like small or very large computing + devices. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -FIXME_HOLGER write me +A stable release of PyPy enabling a wide range of users to experiment and develop +using it as a flexible and highly-optimizable Python implementation. .. include:: wp-tableend.asc From hpk at codespeak.net Wed Oct 8 00:50:52 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 8 Oct 2003 00:50:52 +0200 (MEST) Subject: [pypy-svn] rev 1616 - pypy/trunk/doc/funding Message-ID: <20031007225052.E8A385BA05@thoth.codespeak.net> Author: hpk Date: Wed Oct 8 00:50:50 2003 New Revision: 1616 Modified: pypy/trunk/doc/funding/B5.0_management.txt pypy/trunk/doc/funding/B5.2_management_structure.txt pypy/trunk/doc/funding/B5.4_meetings.txt pypy/trunk/doc/funding/B5.5_quality.txt pypy/trunk/doc/funding/B5.6_communication.txt pypy/trunk/doc/funding/B5.8_ip.txt Log: now i splitted and extended what i formerly did in B5.0 into the single chapters. I'd still enjoy putting all of this together into a single document. There are still bits and pieces missing especially with the more financial management. Also we need to draw the line between "business" and "technical" management or sprints resp. not easy but would be nice to do this to avoid later conflicts. note that i also inserted the MIT license verbatim from the OSI site into B5.8_ip. Modified: pypy/trunk/doc/funding/B5.0_management.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_management.txt (original) +++ pypy/trunk/doc/funding/B5.0_management.txt Wed Oct 8 00:50:50 2003 @@ -18,89 +18,6 @@ FIXME probably some overview-preamble here, i can't write about the financial managment. holger. -Technical development driven by discussion and feedback -------------------------------------------------------- - -The technical development of PyPy is driven by open continous discussion. -Many of the involved decisions are made and verified during one-week -working meetings, so called "sprints". Members from the larger Python -software community are publicly invited and have the chance to interact -and work with the PyPy developers or become one themselves. Mailing lists, -chat-sessions, Wikis and notification of program changes provide a constant -flow of information between PyPy project members and the wider community. -Therefore conflicts out of missing information or due to -misunderstandings will be minimized. - -As the PyPy researchers and developers fully interact with a wider -research and software audience, we expect to often present reports -and scientific papers on major conferences. - - -Technical decisions -------------------- - -Major design or technical decisions are usually reached through consensus -during the sprints. If a conflict cannot be resolved there then the technical -board gets the final say. The members of the technical board are appointed by -a vote of everyone who has commit rights to the source repository. However, -it is expected that design and implementation choices will usually be -determined by consensual agreement or by informal votes on the development -mailing list. This is common practice within the Python and many others free -softare communities. Also, the PyPy developers and researchers will construct -few if any formal hierarchies between them. Constantly working together with -agile methodologies and the visilibity of each individual contribution help -enforce high-quality program code and good design decisions. - - -Intellectual property ---------------------- - -The public availability of the source code at all times together with a -very open and flexible license (the MIT-license) provide the basis to exchange -ideas, contribute to the project or reuse all parts of it from the start. -In return, this provides the developers with fast feedback -and improvements with respect to their current developments. At the heart of a -free software community lies open communication, the free flow of information -and organizing shared interests. The PyPy project is already fully involved and -based on these principles. Finally, every contributor is fully responsible for not -introducing any program code which might infringe third party copyright or patents. - - -The quality ------------ - -The PyPy project will ensure quality by a variety of means. On the grand -scale, the involvement of excellent researchers ensures that the general -direction takes care of latest insights in language research. Moreover, -we will publish our research results on conferences and to scientific -and free software communities. This forms the basis to maintain a high-quality -general technical direction. - -The developers deploy agile methodologies like unittest-driven development -and pair-programming. By the end of the project we expect to have produced -more than 3000 unittests testing every aspect of the runtime system. The -presence of such tests also allows to rapidly change parts of the implementation -without fear of breaking functionality elsewhere. We also plan to release -our runtime system often and thus gather additional feedback from early -adopters, developers and researchers. - -To support the open development we base all of our documents, source -code and website information on a version control system. In combintation -with a notification on all changes this ensures that all interested parties -can review and react to developments. - -The PyPy developers have produced a working prototype within four one-week -sprints and a little development in between. The code and design quality -of the project is already widely accepted. There are now 400 unittests. -As a consequence, Guido van Rossum, the inventor and maintainer of today's -Python, listed is as the number one project he would like to succeed. He -previously attended one of our sprints and got deeply involved with our -architecture and source code which he immediately found intuitive to work with. - -Thus we believe that our choices for quality management are fit to meet -highest standards. - - FIXME Jacob (holger) the financial and management interfacing with the EU needs to be described. Then the different parts need to be structured in a resonable way. @@ -111,22 +28,3 @@ management structure will be put in place, with agreed lines of communication and responsibility. Describe how corrective actions will be initiated and how conflicts will be resolved. - - -here we need to say - -1. who coordinates the project - -2. who manages the project - -3. that we produces free software (solves IP issues) - -4. use internet to collaborate (web site, mailing list, etc.) - -5. we often do sprints - -6. we intend to hold project meetings every X months - -7. we use a versioning system to hold documents and doc and this - ensures tracking and helps greatly with quality - Modified: pypy/trunk/doc/funding/B5.2_management_structure.txt ============================================================================== --- pypy/trunk/doc/funding/B5.2_management_structure.txt (original) +++ pypy/trunk/doc/funding/B5.2_management_structure.txt Wed Oct 8 00:50:50 2003 @@ -1,4 +1,5 @@ -FIXME_HOLGER +Management Structure +==================== We want the 2 boards. Stick youself for PBF, Nicolas for Logilab, Jacob for Strakt Alastair for DKFI into the Management box. Modified: pypy/trunk/doc/funding/B5.4_meetings.txt ============================================================================== --- pypy/trunk/doc/funding/B5.4_meetings.txt (original) +++ pypy/trunk/doc/funding/B5.4_meetings.txt Wed Oct 8 00:50:50 2003 @@ -1,11 +1,59 @@ -B.5.4 Project Meetings +Project Meetings +================ -The Management Board will meet at the start of the project and (2/3/4) +The Management Board will meet at the start of the project and two times per year or on an ad hoc basis as requested. The meetings will -normally be scheduled to rotate between the principal contractors -home base. +normally be scheduled to rotate between countries of the EU and mainly +the principal contractors home base. -Add info on Technical meetings as required. +FIXME Extend? + + +"Sprint" Meetings are the key to PyPy's technical development +------------------------------------------------------------- + +Key to PyPy's technical development and research are so called "sprints". These publically +announced one-week meetings serve as an intense working forum to rapidly discuss +and implement key PyPy ideas with agile methodologies. Developers usually pair +up and write unit-tests to test the to-be-implemented features before actually adding +them. The unittest-first approach helps to understand the planned feature. Additionally, +the discussion in a pair makes sure that obviously wrong pathes of development are +avoided. If something seems too hard to test or to pin down explicitely this is +taken as an indication of an underlying design problem. + +Note that more traditional approaches usually follow a model where developers work alone +and only meet to talk. Instead with sprint-driven development talking and actually +implementing resulting ideas ensures a more focused approach with fast feedback cycles. +While the free software community is successful especially because of it's open +communication model sprints are an accelerator to this process. While coding in pairs +developers educate each other which leads to a broader common understanding of the project. +During a sprint multiple pairs want to work in parallel which adds pressure on design +decisions so that independent development of components of the system is possible. +Thus sprints not only deepen the communication and understanding among researchers and +developers but they imply a working process which enhances the software design in multiple ways. + +With a very-high-level-language like Python rapid development in coding-sprints becomes +especially effective. A VHLL-language generally allows to focus on ideas rather than on low-level +language details. In combintation with pervasive test-driven development this eases high-quality +rapid evolution towards the intendent goals. Obviously, the PyPy developers are very experienced +with Python and bigger applications in general. Thus the full potential of agile methodologies is +unvealed during PyPy sprints. In less than five weeks worth of development (during four sprints) +the group produced a working prototype which is a big success not only in the eyes of its +developers. + + +Technical decisions +------------------- + +Major design or technical decisions are usually reached through consensus +during the sprints. If a conflict cannot be resolved there then the technical +board gets the final say. The members of the technical board are appointed by +a vote of everyone who has commit rights to the source repository. However, +it is expected that design and implementation choices will usually be +determined by consensual agreement or by informal votes on the development +mailing list. This is common practice within the Python and many others free +softare communities. Also, the PyPy developers and researchers will construct +few if any formal hierarchies between them. Constantly working together with +agile methodologies and the visilibity of each individual contribution help +enforce high-quality program code and good design decisions. -FIXME HOLGER THIS IS WHERE YOU DISCUSS THE SPRINTS IN MOST DETAIL. -FIXME LAURA I HAVE A THING OR SO TO SAY IF HOLGER DOESN'T \ No newline at end of file Modified: pypy/trunk/doc/funding/B5.5_quality.txt ============================================================================== --- pypy/trunk/doc/funding/B5.5_quality.txt (original) +++ pypy/trunk/doc/funding/B5.5_quality.txt Wed Oct 8 00:50:50 2003 @@ -1,13 +1,47 @@ -FIXME HOLGER FIXME JACOB -write what we have. We don't apparantly have to have any of the rest. -We just have to say that we will have a plan that will address blah blah -B.5.5 Quality procedures -The project manager will circulate a draft Quality Management plan -forthe project prior to first Project Meeting and and then present it -for approval at the first Meeting. +Quality control of technical development +---------------------------------------- + +The PyPy project will ensure quality by a variety of means. On the grand +scale, the involvement of excellent researchers ensures that the general +direction takes care of latest insights in language research. Moreover, +we will publish our research results on conferences and to scientific +and free software communities. This forms the basis to maintain a high-quality +general technical direction. + +The developers deploy agile methodologies like unittest-driven development +and pair-programming. By the end of the project we expect to have produced +more than 3000 unittests testing every aspect of the runtime system. The +presence of such tests also allows to rapidly change parts of the implementation +without fear of breaking functionality elsewhere. We also plan to release +our runtime system often and thus gather additional feedback from early +adopters, developers and researchers. + +To support the open development we base all of our documents, source +code and website information on a version control system. In combintation +with a notification on all changes this ensures that all interested parties +can review and react to developments. + +The PyPy developers have produced a working prototype within four one-week +sprints and a little development in between. The code and design quality +of the project is already widely accepted. There are now 400 unittests. +As a consequence, Guido van Rossum, the inventor and maintainer of today's +Python, listed is as the number one project he would like to succeed. He +previously attended one of our sprints and got deeply involved with our +architecture and source code which he immediately found intuitive to work with. - It will contain as a minimum, procedures for - +Thus we believe that our choices for technical quality management are fit +to meet highest standards. + + + +Additional Quality procedures +------------------------------ + +The project manager will circulate a draft Quality Management plan +for the project prior to first Project Meeting and and then present it +for approval at the first Meeting. It should complement the prescribed +quality approach with respect to the following aspects: ? Document procedures, standards and control ? Issue control for documents Modified: pypy/trunk/doc/funding/B5.6_communication.txt ============================================================================== --- pypy/trunk/doc/funding/B5.6_communication.txt (original) +++ pypy/trunk/doc/funding/B5.6_communication.txt Wed Oct 8 00:50:50 2003 @@ -1,8 +1,34 @@ B.5.6 Communication and Reporting. -Amplify here specific policies on this subject ie use of email or -communication via web site management page, telephones, video -conferencing, frequency etc +The technical development of PyPy is driven by open continous discussion. +Many of the involved decisions are made and verified during one-week +working meetings, so called "sprints". Members from the larger Python +software community are publicly invited and have the chance to interact +and work with the PyPy developers or become one themselves. + +Mailing lists, chat-sessions, Wikis and notification of program changes +provide a constant flow of information between PyPy project members and +the wider community. Additionally, groups of developers can start +interactive "screen" sessions which allows sharing their workspace and +implement and communicate efficiently. Therefore conflicts out of missing +or conflicting information or due to misunderstandings will be minimized. + +Each sprint meeting is planned for by all developers. The sprint goals +are usually agreed upon before the meeting starts. This is also important +to allow new developers or contributors to join specific efforts. +Sprint results are subsequently published to email and web-channels to +gather feedback and educate others about changes. + +We will present multiple reports and scientific papers on major +conferences such as EuroPython (Python's european community conference), +OSCON (Open Source Convention), PyCon (python developer conference) and to +domain specific audiences such as embedded device developers. + +In a later phase of the project the PEP (Python Enhancement Proposals) +procedures may be implemented. This is the standard procedure for +applying changes to the C-implementation of Python as of today. +It forces an author to clearly state the benefits of the proposed Enhancement +and provides an rationale. However, such a formal method will only by +required when the project reaches the point where users begin to rely +on aspects of our implementation. -FIXME HOLGER -- here we do the Open Source is all about Communication -song \ No newline at end of file Modified: pypy/trunk/doc/funding/B5.8_ip.txt ============================================================================== --- pypy/trunk/doc/funding/B5.8_ip.txt (original) +++ pypy/trunk/doc/funding/B5.8_ip.txt Wed Oct 8 00:50:50 2003 @@ -1,18 +1,42 @@ B.5.8 Management of Knowledge and Intellectual Property -The rules regarding the protection dissemination and use of knowledge -have been simplified and a larger flexibility is granted to the -participants: - -- rules are identical for all participants; - -- rules concentrate on the principles and provisions considered - necessary for an efficient cooperation and the appropriate use and - dissemination of the results; -- participants may define among themselves the arrangements that - fit them the best within the framework provided in the model - contract. +Every contributor is fully responsible for not introducing program code +which might infringe third party copyright or patents for that matter. +Every contributor agrees to license his contributions under a MIT-style +license (approved by the Open Source Initiative):: -See also comments under B.3.3.1 and B.3.3.2 and address here. + The MIT License -FIXME_LAURA write up what IPR helpdesk told you. \ No newline at end of file + Copyright (c) + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +The public availability of PyPy's source code at all times on the basis on such +an open and commercially exploitable license stipulates exchange of ideas, +contribution to the project and reusing all parts of PyPy from the start. + +In return, this provides the developers with fast feedback and improvements with +respect to their current developments. At the heart of a free software community +lies open communication, the free flow of information and organizing shared +interests. The PyPy project is already fully involved and based on these principles. +We also believe that for a language runtime system like PyPy a free license +is of vital importance to reach wide deployment and recognition. Such a license +is also a neccessity to allow PyPy to become a reference implementation of the +Python language specification. From hpk at codespeak.net Wed Oct 8 00:55:20 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 8 Oct 2003 00:55:20 +0200 (MEST) Subject: [pypy-svn] rev 1617 - pypy/trunk/doc/funding Message-ID: <20031007225520.7136C5BA05@thoth.codespeak.net> Author: hpk Date: Wed Oct 8 00:55:19 2003 New Revision: 1617 Modified: pypy/trunk/doc/funding/B4.5_resources.txt Log: removed spurious sprint information which is no in B5.* i wonder if this chapter about "resources" should be more about how we will involve different parties and more and more developers and so. Modified: pypy/trunk/doc/funding/B4.5_resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.5_resources.txt (original) +++ pypy/trunk/doc/funding/B4.5_resources.txt Wed Oct 8 00:55:19 2003 @@ -3,42 +3,7 @@ Show how the project will mobilise the critical mass of resources (personnel, equipment, finance...) necessary for success. -FIXME: i am only writing about sprints below (laura told me so) -but the above sentence seems to indicate that a lot of more stuff should go here. -Please feel free to enhance/modify! - -Coding Sprints are the key to PyPy's technical development ----------------------------------------------------------- - -Key to PyPy's technical development and research are so called "sprints". These publically -announced one-week meetings serve as an intense working forum to rapidly discuss -and implement key PyPy ideas with agile methodologies. Developers usually pair -up and write unit-tests to test the to-be-implemented features before actually adding -them. The unittest-first approach helps to understand the planned feature. Additionally, -the discussion in a pair makes sure that obviously wrong pathes of development are -avoided. If something seems too hard to test or to pin down explicitely this is -taken as an indication of an underlying design problem. - -Note that more traditional approaches usually follow a model where developers work alone -and only meet to talk. Instead with sprint-driven development talking and actually -implementing resulting ideas ensures a more focused approach with fast feedback cycles. -While the free software community is successful especially because of it's open -communication model sprints are an accelerator to this process. While coding in pairs -developers educate each other which leads to a broader common understanding of the project. -During a sprint multiple pairs want to work in parallel which adds pressure on design -decisions so that independent development of components of the system is possible. -Thus sprints not only deepen the communication and understanding among researchers and -developers but they imply a working process which enhances the software design in multiple ways. - -With a very-high-level-language like Python rapid development in coding-sprints becomes -especially effective. A VHLL-language generally allows to focus on ideas rather than on low-level -language details. In combintation with pervasive test-driven development this eases high-quality -rapid evolution towards the intendent goals. Obviously, the PyPy developers are very experienced -with Python and bigger applications in general. Thus the full potential of coding-sprints is -unvealed during PyPy sprints. In less than five weeks worth of development (during four sprints) -the group produced a working prototype which is a big success not only in the eyes of its -developers. - - -FIXME LAURA: should i add more about the involvement of the Python community here? -and something about the python-sprint-culture (Zope3, Plone, twisted) in general? +FIXME_LAURA: i (holger) moved the sprint information now completly +to B5.* because i don't think it belongs here. Can you restate what +is needed here? A description of the involvement of the Python community +and the audience we are reaching and who will be contributing? From ale at codespeak.net Wed Oct 8 13:03:22 2003 From: ale at codespeak.net (ale at codespeak.net) Date: Wed, 8 Oct 2003 13:03:22 +0200 (MEST) Subject: [pypy-svn] rev 1618 - pypy/trunk/doc/funding_retarget Message-ID: <20031008110322.564705A40B@thoth.codespeak.net> Author: ale Date: Wed Oct 8 13:03:21 2003 New Revision: 1618 Removed: pypy/trunk/doc/funding_retarget/ Log: deletion of fundig_retarget From arigo at codespeak.net Wed Oct 8 15:39:50 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 8 Oct 2003 15:39:50 +0200 (MEST) Subject: [pypy-svn] rev 1619 - pypy/trunk/doc/funding Message-ID: <20031008133950.C06C25A298@thoth.codespeak.net> Author: arigo Date: Wed Oct 8 15:39:49 2003 New Revision: 1619 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: my CV -- Armin Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 15:39:49 2003 @@ -16,3 +16,15 @@ The CV of the nominated Project Manager is of particular importance. You have to show that he has experience of successful international project management. Emphasise this aspect. + + +Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher +at the University of Southampton (UK). He studied Mathematics at the +University of Lausanne and obtained his Ph.D. in Logic and Set Theory at +the Free University of Brussels. He is the main author of several +commercial, open source and research projects and contributed to a number +of them, notoriously in the fields of computer graphics and 3D modelling, +education, and programming languages. He recently developped novel +techniques for efficient interpretation of dynamic programming languages. +He is also a member and contributor of the TUNES Project for a Free +Reflective Computing System. From hpk at codespeak.net Wed Oct 8 15:41:00 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 8 Oct 2003 15:41:00 +0200 (MEST) Subject: [pypy-svn] rev 1620 - pypy/trunk/doc/funding Message-ID: <20031008134100.A26AB5A298@thoth.codespeak.net> Author: hpk Date: Wed Oct 8 15:40:59 2003 New Revision: 1620 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: added my CV as discussed with Laura. needs some shortening i guess. Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 15:40:59 2003 @@ -28,3 +28,16 @@ techniques for efficient interpretation of dynamic programming languages. He is also a member and contributor of the TUNES Project for a Free Reflective Computing System. + +Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a +lead programmer producing games for Electronic Arts. In 1991 he went to +university, gave courses in Prolog, C, Assembler, mathematics and assisted +in numerical computing. He got his degree "magna cum laude" and then +consulted for Volkswagen, large German banks and the chairman of the +EU-founded CEN/ISSS workshop who contracted him to prototype integration +of OpenSource software. He also evaluated and published several articles +on opensource projects. He implemented an OpenSource transaction service +on top of TAO/CORBA with Douglas Schmidt and his team. In 2001 he joined +the Python community, published an interactive tool, took part in Zope3 +development and some of the first python coding sprints in Europe. He +is one of the initiators of the PyPy project and organized its first Sprint. From hpk at codespeak.net Wed Oct 8 15:50:34 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 8 Oct 2003 15:50:34 +0200 (MEST) Subject: [pypy-svn] rev 1621 - pypy/trunk/doc/funding Message-ID: <20031008135034.20AE75A298@thoth.codespeak.net> Author: hpk Date: Wed Oct 8 15:50:33 2003 New Revision: 1621 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: shortened to ten lines (a 80 columns). Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 15:50:33 2003 @@ -29,15 +29,13 @@ He is also a member and contributor of the TUNES Project for a Free Reflective Computing System. -Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a -lead programmer producing games for Electronic Arts. In 1991 he went to -university, gave courses in Prolog, C, Assembler, mathematics and assisted -in numerical computing. He got his degree "magna cum laude" and then -consulted for Volkswagen, large German banks and the chairman of the -EU-founded CEN/ISSS workshop who contracted him to prototype integration -of OpenSource software. He also evaluated and published several articles -on opensource projects. He implemented an OpenSource transaction service -on top of TAO/CORBA with Douglas Schmidt and his team. In 2001 he joined -the Python community, published an interactive tool, took part in Zope3 -development and some of the first python coding sprints in Europe. He -is one of the initiators of the PyPy project and organized its first Sprint. +Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead +programmer producing games for Electronic Arts. He went to university, gave +courses in Prolog, C, Assembler, mathematics and assisted in numerical +computing. He got his degree "magna cum laude". He consulted for Volkswagen, +large German banks and the chairman of the EU-founded CEN/ISSS workshop who +contracted him to prototype integration of OpenSource software. He implemented +an opensource transaction service on top of TAO/CORBA and published several +articles about free projects. In 2001 he joined the Python community, published +an interactive tool, took part in Zope3 development and some of the first coding +sprints in Europe and became one of the initiators of the PyPy project. From arigo at codespeak.net Wed Oct 8 16:20:30 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 8 Oct 2003 16:20:30 +0200 (MEST) Subject: [pypy-svn] rev 1622 - pypy/trunk/doc/funding Message-ID: <20031008142030.BB2225A298@thoth.codespeak.net> Author: arigo Date: Wed Oct 8 16:20:29 2003 New Revision: 1622 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: fixed by CV Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 16:20:29 2003 @@ -24,10 +24,10 @@ the Free University of Brussels. He is the main author of several commercial, open source and research projects and contributed to a number of them, notoriously in the fields of computer graphics and 3D modelling, -education, and programming languages. He recently developped novel -techniques for efficient interpretation of dynamic programming languages. -He is also a member and contributor of the TUNES Project for a Free -Reflective Computing System. +education, and programming languages. He recently developped in the Psyco +project novel techniques for efficient interpretation of dynamic programming +languages. He is also a member and contributor of the TUNES Project for a +Free Reflective Computing System. Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead programmer producing games for Electronic Arts. He went to university, gave From tismer at codespeak.net Wed Oct 8 16:47:28 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 8 Oct 2003 16:47:28 +0200 (MEST) Subject: [pypy-svn] rev 1623 - pypy/trunk/doc/funding Message-ID: <20031008144728.67E825B710@thoth.codespeak.net> Author: tismer Date: Wed Oct 8 16:47:27 2003 New Revision: 1623 Modified: pypy/trunk/doc/funding/B7.0_gender_ethical.txt Log: merged chapter 7 into a single document Modified: pypy/trunk/doc/funding/B7.0_gender_ethical.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_gender_ethical.txt (original) +++ pypy/trunk/doc/funding/B7.0_gender_ethical.txt Wed Oct 8 16:47:27 2003 @@ -1,3 +1,8 @@ +Other Issues +================== + +:DELETE:BEGIN + B.7 Other issues B.7.1. If there are ethical or gender issues associated with the @@ -7,3 +12,42 @@ ethical aspects of the implementation of project results. Include the Ethical issues form given below. +:DELETE:END + +Ethical Considerations +----------------------- + +FIXME write this. + +:DELETE:BEGIN + +B.7.2 Are there other EC-policy related issues, and are they taken +into account? Demonstrate a readiness to engage with actors beyond the +research to help spread awareness and knowledge and to explore the +wider societal implications of the proposed work; if relevant set out +synergies with education at all levels. + +(No recommended length ? depends on the number of such other + issues which the project involves). + +:DELETE:END + +Gender Issues +---------------- + +FIXME write this + +Safety Issues +---------------- + +FIXME write this + +Conservation Regulations +-------------------------- + +FIXME write this + +Other Policy related Issues +----------------------------- + +FIXME write this From tismer at codespeak.net Wed Oct 8 16:48:57 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 8 Oct 2003 16:48:57 +0200 (MEST) Subject: [pypy-svn] rev 1624 - pypy/trunk/doc/funding Message-ID: <20031008144857.CC6DF5B710@thoth.codespeak.net> Author: tismer Date: Wed Oct 8 16:48:56 2003 New Revision: 1624 Added: pypy/trunk/doc/funding/B7.0_other_issues.txt (props changed) - copied unchanged from rev 1623, pypy/trunk/doc/funding/B7.0_gender_ethical.txt Removed: pypy/trunk/doc/funding/B7.0_gender_ethical.txt pypy/trunk/doc/funding/B7.2_other_issues.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/crossreferences.asc pypy/trunk/doc/funding/mkxref.py Log: merged chapter 7 into a single document Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Wed Oct 8 16:48:56 2003 @@ -66,7 +66,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The PyPy interpreter itself should be developed and completed as a regular Python/RPython program. This package includes all - parts of CPython that we don't want to move to WP22_. + parts of CPython that we don't want to move to WPXXX22. Further investigation is needed concerning the multimethod concepts of the standard object space, and how to hook in the bytecode compiler. @@ -75,7 +75,7 @@ WPXXX22: Porting CPython C-sourcecode to regular Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Port all parts of CPython which we don't want to - implement in WP21_ into regular Python libraries. + implement in WPXXX21 into regular Python libraries. These ones should also work without PyPy, being just plain-Python replacements for existing CPython functionality. This includes the bytecode compiler, which definitely should @@ -98,7 +98,7 @@ be adjusted during WPXXX31. The goal is to be able to translate arbitrary RPython source code (e.g. - the one produced in WP21_ into low-level code (C, Pyrex, Java, others). + the one produced in WPXXX21 into low-level code (C, Pyrex, Java, others). This includes making a stand-alone, not-PyPy-related tool for general optimisation of arbitrary but suitably restricted Python application or parts thereof. @@ -106,7 +106,7 @@ Bootstrapping PyPy ~~~~~~~~~~~~~~~~~~~ -The goal is to put interpreter (WP21_, WP22_) and translator +The goal is to put interpreter (WPXXX21, WPXXX22) and translator (WPXXX31) together. The interpreter is written as an RPython program. The translator Deleted: /pypy/trunk/doc/funding/B7.0_gender_ethical.txt ============================================================================== --- /pypy/trunk/doc/funding/B7.0_gender_ethical.txt Wed Oct 8 16:48:56 2003 +++ (empty file) @@ -1,53 +0,0 @@ -Other Issues -================== - -:DELETE:BEGIN - -B.7 Other issues - -B.7.1. If there are ethical or gender issues associated with the -subject of the proposal, show they have been adequately taken into -account - indicate which national and international regulations are -applicable and explain how they will be respected. Explore potential -ethical aspects of the implementation of project results. Include the -Ethical issues form given below. - -:DELETE:END - -Ethical Considerations ------------------------ - -FIXME write this. - -:DELETE:BEGIN - -B.7.2 Are there other EC-policy related issues, and are they taken -into account? Demonstrate a readiness to engage with actors beyond the -research to help spread awareness and knowledge and to explore the -wider societal implications of the proposed work; if relevant set out -synergies with education at all levels. - -(No recommended length ? depends on the number of such other - issues which the project involves). - -:DELETE:END - -Gender Issues ----------------- - -FIXME write this - -Safety Issues ----------------- - -FIXME write this - -Conservation Regulations --------------------------- - -FIXME write this - -Other Policy related Issues ------------------------------ - -FIXME write this Deleted: /pypy/trunk/doc/funding/B7.2_other_issues.txt ============================================================================== --- /pypy/trunk/doc/funding/B7.2_other_issues.txt Wed Oct 8 16:48:56 2003 +++ (empty file) @@ -1,8 +0,0 @@ -B.7.2 Are there other EC-policy related issues, and are they taken -into account? Demonstrate a readiness to engage with actors beyond the -research to help spread awareness and knowledge and to explore the -wider societal implications of the proposed work; if relevant set out -synergies with education at all levels. - -(No recommended length ? depends on the number of such other - issues which the project involves). Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Wed Oct 8 16:48:56 2003 @@ -6,15 +6,12 @@ .. _WP06: B6.7.wp06_dynamic_optimization.html .. _WP07: B6.7.wp07_translator_optimisations.html .. _WP08: B6.7.wp08_core_optimisations.html -.. _WP09: B6.7.wp09_language_research.html -.. _WP10: +.. _WP09: B6.7.wp09_language_extensions.html +.. _WP10: B6.7.wp10_app_language_ext.html .. _WP11: B6.7.wp11_validations.html .. _WP12: B6.7.wp12_integration_config.html -.. _WP13: +.. _WP13: B6.7.wp13_existing_apps.html .. _WP14: B6.7.wp14_documentation.html -.. _WP21: B6.7.wp21_interpreter_completion.html -.. _WP22: B6.7.wp22_cpython_to_python.html .. _WP90: B6.7.wp90_constraint_prog.html -.. attention:: **2 files missing: WP10 WP13** .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file Modified: pypy/trunk/doc/funding/mkxref.py ============================================================================== --- pypy/trunk/doc/funding/mkxref.py (original) +++ pypy/trunk/doc/funding/mkxref.py Wed Oct 8 16:48:56 2003 @@ -27,7 +27,7 @@ res["WP"+num] = newfname return res -REF_FILE = "B6.4_workpackage_list.txt" +REF_FILE = "B6.5_workpackage_list.txt" def get_wps_from_file(): # read the file and find all WPnn_ references From pedronis at codespeak.net Wed Oct 8 17:12:31 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 8 Oct 2003 17:12:31 +0200 (MEST) Subject: [pypy-svn] rev 1625 - pypy/trunk/doc/funding Message-ID: <20031008151231.E0C155C3EA@thoth.codespeak.net> Author: pedronis Date: Wed Oct 8 17:12:31 2003 New Revision: 1625 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: start of a refactoring into 1.1 Problem etc... Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 8 17:12:31 2003 @@ -33,9 +33,86 @@ -Scientific and technological objectives of the project & state of the art +B.1 Scientific and technological objectives of the project & state of the art =============================================================================== +B.1.1 Problem to be solved +--------------------------- + +For dynamic languages, for which whole-program static compilation is +not suitable, (bytecode) interpretation is a common implementation +technique, especially for today widely used open-source languages like +Python, because of portability requirements and at least initial +simplicity. + +But the resulting monolithic (C) codebase is inflexible and limited +speed-wise by interpretation overhead. + +Early design decisions concerning aspects such as memory management, +object model and layout, security, multi-threading model are deeply +tangled in the code and cannot be reverted or experimented with. + +User pressure tends to shape interpreters towards performance at the +expense of other aspects (simplicity, flexibility again), possibly +culminating with the introduction of a native JIT, adding a +significant amount of code and complexity and further impairing the +flexibility.[ivme03.pdf] + +Taylorability is armed, e.g. subsetting and adaptation for small +memory footprint and small devices, while today's applications are to +be developed for an increasing variety of devices and environments, +further if non-C platforms (JVM, .NET) are to be supported by the +language a new codebase/interpreter written from scratch is required +(like Jython). + +Moreover, conflicting with performance and manageable complexity, +there is a large number of aspects and features that users would like +to see integrated in the interpreter (or would even do so themselves, +if it were possible at all). These features can be implemented as +libraries, but would benefit a lot from direct support from the +language implementation (FIXME is this important here?: -- which they +generally only have in a couple of experimental languages.) Some +examples: + +* distributed/parallel execution (SMP or Networked) +* orthogonal persistency +* pervasive security support (FIXME) +* logic programming, +* aspect-oriented programming + +Our goal is to attack both the performance and flexibility problems at +the same time, by reimplementing/capturing the semantics of Python in +itself (a subset thereof), central to this is the concept of Object +Space, which captures in a OO-manner at the level of the interpreter +the semantics of individual operations between objects. The resulting +codebase is to be translated to C (or potentially non-C targets) +weawing in aspects like memory management, object layout, etc. + +In a second phase we expect to synthetize from the codebase a +specializing compiler (based on dynamic partial evaluation). + +Further we plan to reuse this framework to add desiderable orthogonal +features and extensions to the language (FIXME list of concrete things +from WPs). + +FIXME XXX: maybe refer to early Kiczales paper on AOP which was more about +appl. specific code generation and component languages (in our case +that would be RPython, and translation is a weaver) and whose spirit +is very much matched by PyPy approach. + +B.1.2 Quantified specific objective +----------------------------------- + +B.1.3 Current State of The Art +------------------------------ + + + +B.1.4 Beyond State of The Art +----------------------------- + +:DELETE:BEGIN + Introduction ------------ @@ -144,14 +221,14 @@ reimplemented in C programs while higher-level languages natively provide the correct algorithms. -:DELETE:BEGIN +DELETE:BEGIN Also note that languages can be static or dynamic independently of being high or low-level: high-level expressive languages can be static and efficient [OCAML] while inexpressive ones can be dynamic and much less efficient [PROLOG]. -:DELETE:END +DELETE:END The PyPy project -- phase one -- aims to write a Python interpreter using Python itself as the implementation language for flexibility, with @@ -296,7 +373,7 @@ In summary, to translate PyPy itself to C, we will be using PyPy! -:DELETE:BEGIN +DELETE:BEGIN XXX this chapter shoud **have the following structure** From lac at codespeak.net Wed Oct 8 18:07:43 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 18:07:43 +0200 (MEST) Subject: [pypy-svn] rev 1626 - pypy/trunk/doc/funding Message-ID: <20031008160743.7F0625C3EA@thoth.codespeak.net> Author: lac Date: Wed Oct 8 18:07:42 2003 New Revision: 1626 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Added Alex, made one change commiter/developer Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 18:07:42 2003 @@ -36,6 +36,20 @@ large German banks and the chairman of the EU-founded CEN/ISSS workshop who contracted him to prototype integration of OpenSource software. He implemented an opensource transaction service on top of TAO/CORBA and published several -articles about free projects. In 2001 he joined the Python community, published -an interactive tool, took part in Zope3 development and some of the first coding -sprints in Europe and became one of the initiators of the PyPy project. +articles about Free projects. In 2001 he joined the Python community, +published an interactive tool, took part in Zope3 development and some of the +first coding Sprints in Europe and became one of the initiators of the +PyPy project. + +Alex Martelli Best-selling author of _Python in a Nutshell_. Co-editor +of _Python Cookbook_ . ActiveState 2002 "Activators' Choice" +award. PSF member, Python developer, PBF board member. Currently +works for AB Strakt, developing the CAPS framework. Also consults for +other firms on Python and O-O design, teaching, coding, feasibility +studies, interfacing. 1989-2002, Cad.Lab (think3, Inc): innovative +component architecture for web-enabling existing GUI-oriented apps; +Event Manager, interfacing, proprietary protocols. Taught Computer +Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM +Research: 3 Outstanding Technical Achievement awards, voice +recognition, image processing. "Laurea" 1980, Electronic Engineering, +Bologna University, 100/100 magna cum laude. From lac at codespeak.net Wed Oct 8 18:16:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 18:16:44 +0200 (MEST) Subject: [pypy-svn] rev 1627 - pypy/trunk/doc/funding Message-ID: <20031008161644.ED0035C3EA@thoth.codespeak.net> Author: lac Date: Wed Oct 8 18:16:43 2003 New Revision: 1627 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Added Tim, ahead of Alex since his resume defines the PSF. Who knows what order will be more effective. Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 18:16:43 2003 @@ -24,7 +24,7 @@ the Free University of Brussels. He is the main author of several commercial, open source and research projects and contributed to a number of them, notoriously in the fields of computer graphics and 3D modelling, -education, and programming languages. He recently developped in the Psyco +education, and programming languages. He recently developed in the Psyco project novel techniques for efficient interpretation of dynamic programming languages. He is also a member and contributor of the TUNES Project for a Free Reflective Computing System. @@ -41,9 +41,23 @@ first coding Sprints in Europe and became one of the initiators of the PyPy project. -Alex Martelli Best-selling author of _Python in a Nutshell_. Co-editor +Tim Peters: Over 20 years top-tier industrial experience in +programming language implementation and high-performance +computing. 1979-1988, Cray Research: Compiler development, Group +leader--common back-end optimization group. 1988-1994, Kendall Square +Research (KSR), Compiler and Library development, Architecture and FPU +design. 1994-2000, Dragon Systems: Developed core speech recognition +system for portable devices; scalable, large-scale telephone speech +recognition; and award-winning PhoneQuery Toolkit product. 2000 to +present: Zope Corporation: Development--Core technologies underlying +Zope's leading content management framework; Python core. Python: +first port of Python to 64-bit platform (KSR-1); POSIX pthreads +support; algorithmic and optimization expertise; elected Director of +Python Software Foundation (PSF) since its inception. + +Alex Martelli: Best-selling author of _Python in a Nutshell_. Co-editor of _Python Cookbook_ . ActiveState 2002 "Activators' Choice" -award. PSF member, Python developer, PBF board member. Currently +award. PSF member, Python langauge developer, PBF board member. Currently works for AB Strakt, developing the CAPS framework. Also consults for other firms on Python and O-O design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab (think3, Inc): innovative From arigo at codespeak.net Wed Oct 8 18:38:21 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 8 Oct 2003 18:38:21 +0200 (MEST) Subject: [pypy-svn] rev 1628 - pypy/trunk/doc/funding Message-ID: <20031008163821.4BE885C3EA@thoth.codespeak.net> Author: arigo Date: Wed Oct 8 18:38:20 2003 New Revision: 1628 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: still working on this document on screen session intermediate checkin ... Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 8 18:38:20 2003 @@ -33,12 +33,90 @@ -B.1 Scientific and technological objectives of the project & state of the art +Scientific and technological objectives of the project & state of the art =============================================================================== -B.1.1 Problem to be solved +Problem to be solved --------------------------- +Current language implementations are static and hard to modify by +users. Even the open-source languages are designed in a non-flexible +way by a small group of developers. While designing a good programming +language is no easy task often application developers seek more +support and configurability of their language. This is especially +the case for the rising number of specialized runtime environments +where small memory footprints, concurrency or realtime features +are essential. + +The architecture of current interpreter implementations, on the other +hand, is generally focused on performance issues. The resulting +monolithic (C) code base is inflexible and expensive to maintain. Early +design decisions concerning aspects such as memory management, object +model and layout, security, multi-threading model are deeply tangled in +the code and cannot be reverted, experimented with or adapted to +specific runtime environments. + +Very-high-level languages (VHLL) offer a highly productive development +environment. However, whole-program static compilation is often not +suitable, so that VHLL are usually implemented by introducing a bytecode +and interpretation level, resulting in a loss of performance. This is +in contrast to lower-level languages such as C, which offer performance +but greatly decrease productivity. + +Thus user pressure tends to shape interpreters towards performance at +the expense of other aspects (simplicity, flexibility), possibly +culminating with the introduction of a native JIT, adding a significant +amount of code and complexity and further impairing the +flexibility.[ivme03.pdf] + +Subsequently, application developers are often left with bad choices not +only for productivity versus performance, but they have to work around +the hard-wired characteristics built into the languages. Instead they +would like to adapt and configure a VHLL to suit their needs while at +the same time developing on top of a custom but standardised language +offering both productivity and performance. + +Quantified specific objective +----------------------------------- + +The aim of the PyPy project is to research and implement an interpreter +and runtime environment for the Python language, built on a unique +architecture enabling both productivity and performance. The main +building block is the concept of an Object Space which cleany +encapsulates computational operations on objects, separated from the +bytecode interpreter. A number of features, most of which are hard to +implement as application-level libraries, can become part of the +language in a manageable and user-configurable way if they are +implemented modularily as Object Spaces. For example: + +* choice of memory and threading model +* choice of speed vs. memory trade-offs +* distributed/parallel execution (SMP or Networked) +* orthogonal persistency +* pervasive security support +* logic and aspect-oriented programming + +The second key idea is to write the interpreter and Object Spaces in a +VHLL language (Python itself) and recover performance with a separate +translation process producing specialized efficient low-level code. The +translation is not one-shot: it can be repeated and tailored to weave +different aspects into releases with different trade-offs and features, +giving the user of the language a real choice. + +The PyPy project plans to deliver a compliant language implementation +passing all relevant (at least 90%) unit-tests of the current reference +C-implementation. Moreover, we will be able to add techniques such as +Just-In-Time compilation without making the interpreter more complex. +Thus we will get speed increases of 2-10 times over the reference +C-implementation. We expect algorithmic code to run at least at 50% of +the speed of pure, optimized C code. + + + + + + + For dynamic languages, for which whole-program static compilation is not suitable, (bytecode) interpretation is a common implementation technique, especially for today widely used open-source languages like @@ -48,9 +126,6 @@ But the resulting monolithic (C) codebase is inflexible and limited speed-wise by interpretation overhead. -Early design decisions concerning aspects such as memory management, -object model and layout, security, multi-threading model are deeply -tangled in the code and cannot be reverted or experimented with. User pressure tends to shape interpreters towards performance at the expense of other aspects (simplicity, flexibility again), possibly From arigo at codespeak.net Wed Oct 8 18:46:43 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 8 Oct 2003 18:46:43 +0200 (MEST) Subject: [pypy-svn] rev 1629 - pypy/trunk/doc/funding Message-ID: <20031008164643.A4C6E5C3EA@thoth.codespeak.net> Author: arigo Date: Wed Oct 8 18:46:42 2003 New Revision: 1629 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: intermediate check-in for ReST compliance Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 8 18:46:42 2003 @@ -115,7 +115,7 @@ - +:DELETE:BEGIN For dynamic languages, for which whole-program static compilation is not suitable, (bytecode) interpretation is a common implementation @@ -175,17 +175,19 @@ that would be RPython, and translation is a weaver) and whose spirit is very much matched by PyPy approach. -B.1.2 Quantified specific objective ------------------------------------ +:DELETE:END -B.1.3 Current State of The Art ------------------------------- +Current State of The Art +------------------------------ +empty -B.1.4 Beyond State of The Art +Beyond State of The Art ----------------------------- +empty + :DELETE:BEGIN Introduction @@ -472,8 +474,6 @@ compared to its potential benefits - high risk may be acceptable in return for high benefits. Avoid very large or unacceptable levels of risk. -:DELETE:END - References: @@ -517,3 +517,5 @@ [ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf + +:DELETE:END From tismer at codespeak.net Wed Oct 8 18:56:21 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 8 Oct 2003 18:56:21 +0200 (MEST) Subject: [pypy-svn] rev 1630 - pypy/trunk/doc/funding Message-ID: <20031008165621.EA1F25B08C@thoth.codespeak.net> Author: tismer Date: Wed Oct 8 18:56:20 2003 New Revision: 1630 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: small corrections on delete begin/end ranges. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 8 18:56:20 2003 @@ -298,14 +298,12 @@ reimplemented in C programs while higher-level languages natively provide the correct algorithms. -DELETE:BEGIN - Also note that languages can be static or dynamic independently of being high or low-level: high-level expressive languages can be static and efficient [OCAML] while inexpressive ones can be dynamic and much less efficient [PROLOG]. -DELETE:END +:DELETE:END The PyPy project -- phase one -- aims to write a Python interpreter using Python itself as the implementation language for flexibility, with @@ -450,7 +448,7 @@ In summary, to translate PyPy itself to C, we will be using PyPy! -DELETE:BEGIN +:DELETE:BEGIN XXX this chapter shoud **have the following structure** From tismer at codespeak.net Wed Oct 8 19:00:30 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 8 Oct 2003 19:00:30 +0200 (MEST) Subject: [pypy-svn] rev 1631 - pypy/trunk/doc/funding/makedoc Message-ID: <20031008170030.110945A19B@thoth.codespeak.net> Author: tismer Date: Wed Oct 8 19:00:26 2003 New Revision: 1631 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: temporary build of the PDF document, although there are violations of ReST in b4.3. Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From lac at codespeak.net Wed Oct 8 19:48:07 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 19:48:07 +0200 (MEST) Subject: [pypy-svn] rev 1632 - pypy/trunk/doc/funding Message-ID: <20031008174807.90EBC5A15A@thoth.codespeak.net> Author: lac Date: Wed Oct 8 19:48:06 2003 New Revision: 1632 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Adding Jacob Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 19:48:06 2003 @@ -17,6 +17,18 @@ You have to show that he has experience of successful international project management. Emphasise this aspect. +Jacob Hall?n, 45, comes to his position as co-founder and CTO of +AB Strakt from being a Technical Manager and international standards +expert at the LIBRIS Department of the Royal Library. He was the +LIBRIS representative in the EU funded ONE-2 project. Before this, he +was the CEO of NetGuide Scandinavia AB, one of the first internet +services companies in Sweden. Mr Hall?n has also been a Computer +Science and Programming teacher and an army officer. Throughout his +career he has been managing projects varying from 1200 participant +conventions down to 3 person development projects. He has also done +electronics development and microcontroller programming, winning two +innovation awards in the process. Mr Hall?n is chairman of the Python +Business Forum. Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher at the University of Southampton (UK). He studied Mathematics at the From lac at codespeak.net Wed Oct 8 19:53:39 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 19:53:39 +0200 (MEST) Subject: [pypy-svn] rev 1633 - pypy/trunk/doc/funding Message-ID: <20031008175339.0DA255A15A@thoth.codespeak.net> Author: lac Date: Wed Oct 8 19:53:39 2003 New Revision: 1633 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Added Samuele. Anna, we are eggs for sure.... Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Wed Oct 8 19:53:39 2003 @@ -79,3 +79,17 @@ Research: 3 Outstanding Technical Achievement awards, voice recognition, image processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 magna cum laude. + +Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich +(1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 +he worked as teaching/published research assistant at the Institute of +Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic +programming framework for Java JRGP, becoming involved in Jython (the +industry-strength Java re-implemetation of Python). He is now a main +developer of Jython, working on internals, compilers and Java +integration, and was author of Jython Essentials (O'Reilly, 2002). He +is also involved on the ongoing design of Python. For his +contributions to Python/Jython he has been nominated member of the +PSF. He brings to the project his know-how on languages, +re-implementation/design of Python, reflection, lookup and dispatch +optimization. From lac at codespeak.net Wed Oct 8 20:47:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 20:47:44 +0200 (MEST) Subject: [pypy-svn] rev 1634 - pypy/trunk/doc/funding Message-ID: <20031008184744.370945A27F@thoth.codespeak.net> Author: lac Date: Wed Oct 8 20:47:43 2003 New Revision: 1634 Modified: pypy/trunk/doc/funding/abstract.txt Log: new abstract. Modified: pypy/trunk/doc/funding/abstract.txt ============================================================================== --- pypy/trunk/doc/funding/abstract.txt (original) +++ pypy/trunk/doc/funding/abstract.txt Wed Oct 8 20:47:43 2003 @@ -1,33 +1,36 @@ - This proposal directly addresses the Strategic Objective - IST-2002-2.3.2.3 - 'Open development platforms for software and - services' of the Second Call of the Information Society - Technologies Workprogramme. +The PyPy project will build an portable, fast, flexible +context-aware, programming platform supporting Very-High +Level Languages (VHLL) to yield significant productivity gains in +software development. PyPy's flexible and modular runtime system will +be well-suited for networked, embedded, and mobile devices. - The PyPy project will build a flexible, modular, context-aware, - self-hosting Just-In-Time (JIT) specialising compiler for Python. - Python is a portable, interpreted, object-oriented, Free/Open - Source Very-High Level Language (VHLL). The most recent version - of the language is Python 2.3.1, released under the Python - Software Foundation License, approved by both the Open Source - Initiative, and the Free Software Foundation. +VHLLs' high semantic level can help extend context-awareness, beyond +the basics (time, location, identity), to a wider variety of context +information and actions. However, VHLLs can often produce slow or +large application and supporting code, limiting their applicability in +small devices. PyPy will remove this limitation via the +innovative concept of ObjectSpaces, high-level formulations of +language interpreter components. Explicit, clear separation of parts +yields modularity and flexibility. Since ObjectSpaces are themselves +coded in a VHLL, they can be specialized for execution speed, memory +consumption, or other runtime parameters. - Creating a new vesion will take advantage of the known European - strengths in formal methods and languages (Python was first - developed in 1990 at CWI, Centrum voor Wiskunde en Informatica, - in the Netherlands.) It will go beyond the state of the Art in - computer languages, and produce a runtime system which is much - better suited for the development and deployment of networked, - embedded, and mobile devices. +The language for PyPy will be the widely-used Open Source programming +language Python, first developed in 1990 at CWI (Centrum voor Wiskunde +en Informatica) in the Netherlands. By producing the new reference +version of the language, we will have a large impact as there are an +estimated 175,000 Python programmers worldwide. Emphasizing +simplicity and readability, Python has a wide appeal among +non-programmers, particularly among women, than those perceived as +needing extensive mathematical training and ability. An improved +Python can thus help somewhat in promoting social cohesion and gender +equality. - Considerable effort will be made to disseminate this knowledge, - among academics, SMEs, Industrial users, and through our Open - website and mailing lists, any interested person. This will - ensure that the project will be fully exploited upon completion. +PyPy will leverage known European strengths in formal methods and +languages, operating by a novel Agile Software Development +methodology for distributed development, including short, +high-productivity meetings known as "Sprints". Systematic efforts to +spread the knowledge produced by the project among academics, SMEs, +industry, and other interested parties, will ensure the project's +results and achievements are fully exploited. - As foundational applied research, focusing on fundamental design - concepts, there will be significant indirect effects wherever the - Python programming langauge is taught or deployed. Python is - widely used as a 'first programming language' and has been very - successful among non-programmers, particularily women. The - success of Python can therefore have a limited effect in - promoting social cohesion and gender equality. From lac at codespeak.net Wed Oct 8 20:53:01 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 20:53:01 +0200 (MEST) Subject: [pypy-svn] rev 1635 - pypy/trunk/doc/funding Message-ID: <20031008185301.D69B65A27F@thoth.codespeak.net> Author: lac Date: Wed Oct 8 20:53:01 2003 New Revision: 1635 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: Make sure this not get out of sync with doc/funding/abstract.txt this is the wrong syntax, I know, but will look that up next. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Wed Oct 8 20:53:01 2003 @@ -47,65 +47,7 @@ :DELETE:END -The PyPy project will build an elegant, flexible, modular, -context-aware implementation of the Open Source programming language -Python written in itself. Python is a very popular Agile, -Very-High-Level Object-Oriented, fixed-and-dynamically-typed -interpreted programming language. Python ranks sixth in world-wide -usage, after Java, Visual Basic, C, C++ and Perl and has an estimated -world-wide programmer community of 175,000. (See section FIXME WHAT -ONE for how we arrive at this number). It is European as well -- -developed at CWI FIXME YAP ABOUT CWI by Guido van Rossum, a Dutch -computer scientist currently living in the USA. +include doc/funding/abstract.txt here. -The current State-of-the-Art, both in Python and in Computer Languages -in general does not best serve the new needs of the creators of -embedded, networked and distributed software sectors. They need a -language which was more flexible, easier to reduce to its 'bare-bones' -for embedding, and which could dynamically reconfigure itself and -optimise execution speed at the interpreter level. Consequently, the -PyPy project is a collaboration between academic researchers and SME -software and service providers. The former have the skill and vision -to produce a new run-time language architecture for the twenty-first -century and the latter wish to deploy PyPy in their innovative new -business ventures. The results of the PyPy project are also expected to be -taken-up by established industrial users. We have expressions of -interest from the Danish manufacturer of high-end stereo equipment, -Bang and Olufsen, and the mobile industrialists Ericsson (in Sweden) -and Nokia (in Denmark). - -The project will go through three phases. In the first phase, we will -build a complete State-of-the-Art PyPy Interpreter. By this we mean -not only that PyPy will be perfectly compliant with the language -behavior of the existing Python language, (FIXME ask Armin and Samuele -can I say BNR-compliant?) but also that it will be a State-Of-the-Art -Very High Level Object-Oriented Language. - -In the second phase, we will develop a high-performance PyPy that -addresses our modern needs. This PyPy will transcend the -State-of-the-Art -- it will be an innovative language best suited for -mobile, networked, and distributed computing. - -In a final third phase, we will validate the previous results by -implementing several applications using the high-performance PyPy -interpreter. FIXME we didn't say Logilab or DKFI part, need -sentences. - -Glossary Note: We have worked very hard to avoid jargon in this -proposal. Most of what we are left with are commonplace in -computer science. However we have made one of our own, CPython, a -term only current with the PyPy development Team. - -There are currently two implementations of Python in common use. The -first one, which we will call CPython, but which is what the world -knows as Python, is a C implementation of the Python Programming -language which compiles to its own virtual machine. The second one is -Jython, a pure-Python implementation which compiles to the Java -virtual machine. T -When currently there are 2 versions of Python in common use. The -first, commonly called Python whose most recent release is 2.3.2 -compiles down to C code. This is the one that we estimate to have -175,000 users world-wide. The second compiles to the Java virtual -machine. This is Jython. FIXME_NICO FIXME_LAURA check this From lac at codespeak.net Wed Oct 8 20:58:56 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 8 Oct 2003 20:58:56 +0200 (MEST) Subject: [pypy-svn] rev 1636 - pypy/trunk/doc/funding Message-ID: <20031008185856.0A32E5A8A6@thoth.codespeak.net> Author: lac Date: Wed Oct 8 20:58:56 2003 New Revision: 1636 Modified: pypy/trunk/doc/funding/abstract.txt Log: Alex made some changes. I am getting sick of this file ... :-( Modified: pypy/trunk/doc/funding/abstract.txt ============================================================================== --- pypy/trunk/doc/funding/abstract.txt (original) +++ pypy/trunk/doc/funding/abstract.txt Wed Oct 8 20:58:56 2003 @@ -1,36 +1,33 @@ -The PyPy project will build an portable, fast, flexible -context-aware, programming platform supporting Very-High -Level Languages (VHLL) to yield significant productivity gains in -software development. PyPy's flexible and modular runtime system will -be well-suited for networked, embedded, and mobile devices. +The PyPy project will build a portable, fast, flexible, context-aware +programming platform supporting Very-High Level Languages (VHLL) to +yield significant productivity gains in software development. PyPy's +flexible, modular runtime system will be well-suited for networked, +embedded, and mobile devices. VHLLs' high semantic level can help extend context-awareness, beyond the basics (time, location, identity), to a wider variety of context -information and actions. However, VHLLs can often produce slow or -large application and supporting code, limiting their applicability in -small devices. PyPy will remove this limitation via the -innovative concept of ObjectSpaces, high-level formulations of -language interpreter components. Explicit, clear separation of parts -yields modularity and flexibility. Since ObjectSpaces are themselves -coded in a VHLL, they can be specialized for execution speed, memory -consumption, or other runtime parameters. +information and actions. However, VHLLs can often produce slow or large +application and supporting code, hampering their use for small devices. +We will solve this problem via the innovative concept of ObjectSpaces, +high-level formulations of language interpreter components. Explicit, +clear separation of parts yields modularity and flexibility. +ObjectSpaces are themselves coded in a VHLL and can be specialised for +execution speed, memory consumption, or other parameters. -The language for PyPy will be the widely-used Open Source programming +PyPy will use and target the widely-used Open Source programming language Python, first developed in 1990 at CWI (Centrum voor Wiskunde -en Informatica) in the Netherlands. By producing the new reference -version of the language, we will have a large impact as there are an -estimated 175,000 Python programmers worldwide. Emphasizing -simplicity and readability, Python has a wide appeal among -non-programmers, particularly among women, than those perceived as -needing extensive mathematical training and ability. An improved -Python can thus help somewhat in promoting social cohesion and gender -equality. +en Informatica) in the Netherlands. By producing the new reference +version of the language, we will have a large impact on the estimated +175,000 Python programmers worldwide. Emphasizing simplicity and +readability, Python has wider appeal among non-programmers, and +particularly among women, than languages perceived as needing extensive +mathematical training and ability. An improved Python can thus help +somewhat in promoting social cohesion and gender equality. PyPy will leverage known European strengths in formal methods and -languages, operating by a novel Agile Software Development -methodology for distributed development, including short, -high-productivity meetings known as "Sprints". Systematic efforts to -spread the knowledge produced by the project among academics, SMEs, -industry, and other interested parties, will ensure the project's -results and achievements are fully exploited. - +languages, operating by a novel Agile Software Development methodology +for distributed development, including short, high-productivity +meetings known as "Sprints". Systematic efforts to spread the knowledge +produced by the project among academics, SMEs, industry, and other +interested parties, will ensure the project's results and achievements +are fully exploited. From pedronis at codespeak.net Thu Oct 9 00:22:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 9 Oct 2003 00:22:30 +0200 (MEST) Subject: [pypy-svn] rev 1637 - pypy/trunk/doc/funding Message-ID: <20031008222230.B73A65A27F@thoth.codespeak.net> Author: pedronis Date: Thu Oct 9 00:22:28 2003 New Revision: 1637 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: added draft for Current State of the Art some of the things on Psyco may make no sense, sorry for that. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 00:22:28 2003 @@ -31,8 +31,6 @@ B.1.4 Beyond State of The Art - - Scientific and technological objectives of the project & state of the art =============================================================================== @@ -111,10 +109,6 @@ C-implementation. We expect algorithmic code to run at least at 50% of the speed of pure, optimized C code. - - - - :DELETE:BEGIN For dynamic languages, for which whole-program static compilation is @@ -155,6 +149,8 @@ * logic programming, * aspect-oriented programming +!!! reuse some of this: + Our goal is to attack both the performance and flexibility problems at the same time, by reimplementing/capturing the semantics of Python in itself (a subset thereof), central to this is the concept of Object @@ -181,7 +177,76 @@ Current State of The Art ------------------------------ -empty +Haskell monadic modular interpreters [popl95.ps.gz][dsl.ps.gz] are a +researched attempt at achieving modularity for interpreters. They have +not been tried on something as large as Python, as approach it is hard +to relate to for programmers accustomed to more conventional OO +programming and requires sophisticated partial evaluation to remove the +monadic overhead. + +Our Object Spaces should allow customization with OO techniques, they +will encapsulate the object operation semantics, creation and global +state of all objects. Monad transformers can be used also to +modularize continuation passing, exceptions and other control flow +aspects. We expect to encapsulate those in an interpreter loop to be +also translated or to implement them as aspects weaved in by the +translation process, for example producing CPS code. + +In its basics the approach of writing a language interpreter in the +language itself (a subset thereof) and then producing a running +low-level code version trough a translation process has already been +taken, e.g. for the Scheme (Scheme 48)[kelsey97prescheme.pdf] and the +Smalltalk (Squeak) [OOPSLA.Squeak.html] languages. Obtaining in this +way an interpreter comparable with current C Python implementation is +within current state of the art, but successively we plan to exploit +the gained flexibility much further, separating concerns between the +translator, the code and Object Spaces encapsulating the core language +and its semantics and further pluggable modules for both. + +JIT compilers have been reasonably well studied; an account of their +history is given in [jit-history.pdf]. But actually writing a JIT for +a given language is generally a major task [oopsla-vm-wkshp.pdf]. +Different techniques to ease this path have been recently explored; +let us cite: + +* to implement a dynamic language in a flexible way, it can be written + on top of another one, e.g. as a dynamic translator that produces + bytecodes for an existing virtual machine. If the virtual machine is + already equipped with state-of-the-art JIT compilation, it is + possible to leverage its benefits to the new language. This path is + not only much shorter than designing a complete custom JIT, but it + is also easier to maintain and evolve. This idea is explored for the + Self virtual machine in [oopsla-vm-wkshp.pdf]. As pointed out in + that paper, some source language features may not match any of the + target virtual machine features. When this issue arises, we are + left with the hard problem of refactoring an efficient JIT-based + virtual machine. + +* a completely different approach: making it easier to derive a JIT + from an existing C interpreter. DynamoRIO instrumentates the + execution of compiled programs and optimizes them dynamically. It + has been extended with specific support for interpreters. With + minimal amounts of changes in the source of an interpreter, it can + significantly reduce the processor-time interpretative overhead + [ivme03.pdf]. While this offers a highly competitive gain/effort + ratio, performance does not reach the levels of a hand-crafted JIT. + +Current Python C implementation (CPython) is a straight-forward bytecode +interpreter. Psyco [psyco] XXX [ucpy-reverse-engineering-python.pdf] is +an extension to it implementing a prototype JIT. + +Psyco is more precisely a specializing JIT compiler based on abstract +interpretation. It specializes on values using heuristics not to be +over-eager. It gathers statistics to applies itself only on often +executed code and performs well for algorithmic code and built-in +types. It would likely benefit from integration with type-feedback +techniques as developed for Self [hlzle91optimizing.pdf] +[reconciling-responsiveness-with-performance.pdf] to deal more +effectively with (highly) polymorphic call-sites. + +In its current incarnation it is also a delicate hand-crafted piece +of code, which is hard to maintain. But this should not inherently be the +case. Beyond State of The Art ----------------------------- From lac at codespeak.net Thu Oct 9 00:31:47 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Thu, 9 Oct 2003 00:31:47 +0200 (MEST) Subject: [pypy-svn] rev 1638 - pypy/trunk/doc/funding Message-ID: <20031008223147.DB2255A27F@thoth.codespeak.net> Author: lac Date: Thu Oct 9 00:31:47 2003 New Revision: 1638 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: Ok, I am not the rotten egg then. Anna, is that brimstone I smell from Bologna or ... :-) Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Thu Oct 9 00:31:47 2003 @@ -93,3 +93,16 @@ PSF. He brings to the project his know-how on languages, re-implementation/design of Python, reflection, lookup and dispatch optimization. + +Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer +of the PBF. Studied Physics (csc minor) at the University of Toronto, +and later instructed there in Physics and Computer Science, while +simultaneously working for the Canadian Armed Forces, teaching +programming to non-programmers, and assisting with research in Human +Factors Engineering and Learning Techniques. Moving to the US, she +consulted for software companies and government institutions, taught +Unix, project management, and interpersonal relations, and wrote a +geophysical simulation system. She brings strong connections in +financial and government sectors, and was an Open Source advocate +before the term was coined. Her passions: programming, empowerment of +average citizens, and the Open Society. From pedronis at codespeak.net Thu Oct 9 03:04:09 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Thu, 9 Oct 2003 03:04:09 +0200 (MEST) Subject: [pypy-svn] rev 1639 - pypy/trunk/doc/funding Message-ID: <20031009010409.9418A5A27F@thoth.codespeak.net> Author: pedronis Date: Thu Oct 9 03:04:08 2003 New Revision: 1639 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: first draft of a "Beyond the State of the Art" section. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 03:04:08 2003 @@ -251,7 +251,64 @@ Beyond State of The Art ----------------------------- -empty +Our architecture is based on Object Spaces, and translation. The +interpreter's main dispatch loop handles control flow and supporting +data structures (frame stack, bytecode objects...); each individual +operation on objects is dispatched to the object space. + +Differently from cited related to work, we don't expect to encode a +fixed single interpreter in all its details in a subset of our VHLL +(Python). We plan to exploit the flexibility and abstraction gained by +the using of the VHLL subset and the indirectness of translation, in +order to weave aspect such as memory management, object layout etc at +translation time. + +In general we will explore for each feature and extension how to best +implement it by separating concerns between OO-customized Object +Spaces, other modules also translated, or the pluggable behavior of +the translation itself. + +Many of these aspects are really cross-cutting concerns in the +original AOP sense. In general our approach relates to the seminal +AOP ideas in [kiczales97aspectoriented.pdf], although they have not been +used on the interpreter for a large practical language. Our subset of +Python in which to express the core interpreter and Object Spaces is +the component language in the terminology of the paper, while the +translator which is also a weaver is expressed in full Python. For +describing aspects and at system definition time we will be able to +use the full dynamism of Python. + +For debugging and comprehensibility we expect the core interpreter and +Object Spaces to be runnable as a normal Python program on a Python +interpreter. + +XXX something about what is innovative in the translator itself? +XXX currently the "The Translator section" + +XXX edit?: + +Although Psyco was hand-written, large parts have a one-to-one +correspondence to whole sections of the C Python interpreter. This is +uncommon for JITs, but Psyco's good results give ample +proof-of-concept. Moreover, this property can be explicitely related +to the DynamoRIO project cited above, which instrumentates the +interpreter itself. Indeed, the one-to-one correspondence between +parts of C Python and Psyco is as follows: to each expression in C +Python corresponds a more complex expression in Psyco, which does +instrumentation and optimisations. The difference with DynamoRIO is +that the latter analyses the machine code resulting from the +compilation of the interpreter at run-time. In Psyco, the one-to-one +correspondance is with the C source instead. It could certainly have +been done by automated analysis of the C source of C Python, but this +is difficult and error-prone. + +In the PyPy project, on the other hand, the source code of the +interpreter will be written in Python instead of C. This is much +easier to analyse safely. Thus, the plan is to raise the level further +and rely on yet another customisation of the translator, to let it +emit the complex Psyco-style expressions instead of (or in addition +to) the normal C expressions that would be the direct translation. +XXX /edit :DELETE:BEGIN @@ -564,7 +621,7 @@ OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf -[hlzle91optimizing.pdf] Urs Hlzle, Craig Chambers, and David Ungar, +[hlzle91optimizing.pdf] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, @@ -581,4 +638,9 @@ [ucpy-reverse-engineering-python.pdf] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf +[kiczales97aspectoriented.pdf] Gregor Kiczales and John Lamping and + Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc + Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 +http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf + :DELETE:END From arigo at codespeak.net Thu Oct 9 13:57:41 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 9 Oct 2003 13:57:41 +0200 (MEST) Subject: [pypy-svn] rev 1640 - pypy/trunk/doc/funding Message-ID: <20031009115741.B2BF85A94C@thoth.codespeak.net> Author: arigo Date: Thu Oct 9 13:57:40 2003 New Revision: 1640 Added: pypy/trunk/doc/funding/hlzle91optimizing.pdf-reversed - copied unchanged from rev 1639, pypy/trunk/doc/funding/hlzle91optimizing.pdf pypy/trunk/doc/funding/hlzle91optimizing.ps.gz (contents, props changed) pypy/trunk/doc/funding/kiczales97aspectoriented.pdf (contents, props changed) Removed: pypy/trunk/doc/funding/hlzle91optimizing.pdf Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Fixed a typo and added the article Samuele references in objectives.txt. Also produced a version of hlzle91optimizing that has the pages in the correct order. Note that dsl.ps.gz takes a long time to display each page. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 13:57:40 2003 @@ -80,7 +80,7 @@ The aim of the PyPy project is to research and implement an interpreter and runtime environment for the Python language, built on a unique architecture enabling both productivity and performance. The main -building block is the concept of an Object Space which cleany +building block is the concept of an Object Space which cleanly encapsulates computational operations on objects, separated from the bytecode interpreter. A number of features, most of which are hard to implement as application-level libraries, can become part of the @@ -240,7 +240,7 @@ over-eager. It gathers statistics to applies itself only on often executed code and performs well for algorithmic code and built-in types. It would likely benefit from integration with type-feedback -techniques as developed for Self [hlzle91optimizing.pdf] +techniques as developed for Self [hlzle91optimizing.ps.gz] [reconciling-responsiveness-with-performance.pdf] to deal more effectively with (highly) polymorphic call-sites. @@ -486,7 +486,7 @@ any of the target virtual machine features. When this issue araises, we are left with the hard problem of refactoring an efficient JIT-based virtual machine. - XXX state-of-the-art in Self: [hlzle91optimizing.pdf] + XXX state-of-the-art in Self: [hlzle91optimizing.ps.gz] [reconciling-responsiveness-with-performance.pdf]. * a completely different approach: making it easier to derive a JIT from @@ -621,7 +621,7 @@ OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf -[hlzle91optimizing.pdf] Urs H?lzle, Craig Chambers, and David Ungar, +[hlzle91optimizing.ps.gz] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, Deleted: /pypy/trunk/doc/funding/hlzle91optimizing.pdf ============================================================================== Files /pypy/trunk/doc/funding/hlzle91optimizing.pdf Thu Oct 9 13:57:40 2003 and (empty file) differ Added: pypy/trunk/doc/funding/hlzle91optimizing.ps.gz ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/kiczales97aspectoriented.pdf ============================================================================== Binary file. No diff available. From arigo at codespeak.net Thu Oct 9 14:17:23 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 9 Oct 2003 14:17:23 +0200 (MEST) Subject: [pypy-svn] rev 1641 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031009121723.A24A55A94C@thoth.codespeak.net> Author: arigo Date: Thu Oct 9 14:17:22 2003 New Revision: 1641 Added: pypy/trunk/src/pypy/translator/annset.py (contents, props changed) pypy/trunk/src/pypy/translator/autopath.py (contents, props changed) pypy/trunk/src/pypy/translator/test/test_annset.py (contents, props changed) pypy/trunk/src/pypy/translator/translator.py (contents, props changed) Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/flowmodel.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/simplify.py (props changed) pypy/trunk/src/pypy/translator/test/test_annotation.py pypy/trunk/src/pypy/translator/test/test_flowmodel.py (props changed) pypy/trunk/src/pypy/translator/test/test_simplify.py (props changed) Log: Annotations are now handled by an AnnotationSet class. Also have a look at 'translator.py' for a nicer way to call the various operations defined in the other modules. Using it on small examples really allows you to see what's going on (mmh, we can see that simplify.py is a bit buggy in its variable renaming...) Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Thu Oct 9 14:17:22 2003 @@ -1,27 +1,10 @@ from __future__ import generators from pypy.translator.flowmodel import * +from pypy.translator.annset import AnnotationSet, Cell -class GraphGlobalVariable(Variable): - pass - -def what_about(opname, args, annotations): - for ann in annotations: - if ann.opname == opname and list(ann.args) == args: - return ann.result - return None - -def get_type(w,annotations): - if isinstance(w,Constant): - return type(w.value) - w_type = what_about('type', [w], annotations) - if isinstance(w_type ,Constant): - return w_type.value - return None - -def set_type(var,type,annotations): - ann = SpaceOperation("type",[var],Constant(type)) - annotations.append(ann) +#class GraphGlobalVariable(Variable): +# pass class Annotator: @@ -29,21 +12,33 @@ self.flowgraph = flowgraph def build_types(self, input_arg_types): - input_ann = [] + input_ann = AnnotationSet() for arg, arg_type in zip(self.flowgraph.get_args(), input_arg_types): - set_type(arg, arg_type, input_ann) - return self.build_annotations(input_ann) + input_ann.set_type(arg, arg_type) + self.build_annotations(input_ann) def build_annotations(self,input_annotations): self.annotated = {} self.endblock = BasicBlock([Variable('_return_value')], [], [], None) self.flowin(self.flowgraph.startblock,input_annotations) - return self.annotated - def end_annotations(self): - "Returns (return_value_Variable(), annotations_list)." - # XXX what if self.endblock not in self.annotated? - return self.endblock.input_args[0], self.annotated[self.endblock] + def get_return_value(self): + "Return the return_value variable." + return self.endblock.input_args[0] + + def get_variables_ann(self): + """Return a dict {Variable(): AnnotationSet()} mapping each variable + of the control flow graph to a set of annotations that apply to it.""" + # XXX this assumes that all variables are local to a single block, + # and returns for each variable the annotations for that block. + # This assumption is clearly false because of the EggBlocks. + # This has to be fixed anyway. + result = {} + for block, ann in self.annotated.items(): + for v in block.getlocals(): + #assert v not in result -- XXX currently false + result[v] = ann + return result def simplify_calls(self): for block, ann in self.annotated.iteritems(): @@ -51,34 +46,46 @@ for op in block.operations: if op.opname == "call": w_func, w_varargs, w_kwargs = op.args - w_len = what_about('len', [w_varargs], ann) - if isinstance(w_len, Constant): - args_w = [what_about('getitem', [w_varargs, Constant(i)], - ann) - for i in range(w_len.value)] - if None not in args_w: - args_w.insert(0, w_func) + c = Cell() + ann.match(SpaceOperation('len', [w_varargs], c)) + if isinstance(c.content, Constant): + length = c.content.value + args_w = [w_func] + for i in range(length): + c = Cell() + if not ann.match(SpaceOperation('getitem', [ + w_varargs, Constant(i)], c)): + break + args_w.append(c.get()) + else: op = SpaceOperation('simple_call', args_w, op.result) # XXX check that w_kwargs is empty newops.append(op) block.operations = newops + def simplify(self): + self.simplify_calls() + #__________________________________________________ def flowin(self, block, annotations): if block not in self.annotated: - oldannotations = None - newannotations = annotations[:] + oldlen = None + self.annotated[block] = blockannotations = annotations else: - oldannotations = self.annotated[block] - #import sys; print >> sys.stderr, block, oldannotations, annotations, - newannotations = self.unify(oldannotations,annotations) - #import sys; print >> sys.stderr, newannotations + blockannotations = self.annotated[block] + oldlen = len(blockannotations) + #import sys; print >> sys.stderr, block, blockannotations + #import sys; print >> sys.stderr, '/\\', annotations, '==>', + blockannotations.intersect(annotations) + #import sys; print >> sys.stderr, blockannotations for op in block.operations: - self.consider_op(op,newannotations) - self.annotated[block] = newannotations - if newannotations != oldannotations and block is not self.endblock: + self.consider_op(op, blockannotations) + # assert monotonic decrease + assert (oldlen is None or len(blockannotations) <= oldlen), ( + block, oldlen, blockannotations) + if len(blockannotations) != oldlen and block is not self.endblock: self.flownext(block.branch,block) def consider_op(self,op,annotations): @@ -88,10 +95,10 @@ def consider_op_add(self,op,annotations): arg1,arg2 = op.args - type1 = get_type(arg1,annotations) - type2 = get_type(arg2,annotations) + type1 = annotations.get_type(arg1) + type2 = annotations.get_type(arg2) if type1 == int and type2 == int: - set_type(op.result,int,annotations) + annotations.set_type(op.result,int) consider_op_sub = consider_op_add consider_op_and_ = consider_op_add # don't forget the trailing '_' @@ -106,17 +113,21 @@ consider_op_ge = consider_op_add def consider_op_newtuple(self,op,annotations): - set_type(op.result,tuple,annotations) + annotations.set_type(op.result,tuple) ann = SpaceOperation("len",[op.result],Constant(len(op.args))) - annotations.append(ann) + annotations.add(ann) for i in range(len(op.args)): ann = SpaceOperation("getitem",[op.result,Constant(i)],op.args[i]) - annotations.append(ann) + annotations.add(ann) def consider_const(self,to_var,const,annotations): if getattr(const, 'dummy', False): return # undefined local variables - set_type(to_var,type(const.value),annotations) + annotations.set_type(to_var,type(const.value)) + if isinstance(const.value, list): + pass # XXX say something about the type of the elements + elif isinstance(const.value, tuple): + pass # XXX say something about the elements def flownext(self,branch,curblock): getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) @@ -124,7 +135,7 @@ def flownext_Branch(self,branch,curblock): if branch.target.has_renaming: renaming = {} - newannotations = [] + newannotations = AnnotationSet() for w_from,w_to in zip(branch.args,branch.target.input_args): if isinstance(w_from,Variable): @@ -132,33 +143,13 @@ else: self.consider_const(w_to,w_from,newannotations) - def rename(w): - if isinstance(w,Constant): - return [w] - if isinstance(w,GraphGlobalVariable): - return [w] - else: - return renaming.get(w, []) - - def renameall(list_w): - if list_w: - for w in rename(list_w[0]): - for tail_w in renameall(list_w[1:]): - yield [w] + tail_w - else: - yield [] - - for ann in self.annotated[curblock]: - # we translate a single SpaceOperation(...) into either - # 0 or 1 or multiple ones, by replacing each variable - # used in the original operation by (in turn) any of - # the variables it can be renamed into - for list_w in renameall([ann.result] + ann.args): - result = list_w[0] - args = list_w[1:] - newannotations.append(SpaceOperation(ann.opname,args,result)) + #import sys; print >> sys.stderr, self.annotated[curblock] + #import sys; print >> sys.stderr, renaming + for ann in self.annotated[curblock].enumerate(renaming): + newannotations.add(ann) + #import sys; print >> sys.stderr, newannotations else: - newannotations = self.annotated[curblock] + newannotations = self.annotated[curblock].copy() self.flowin(branch.target,newannotations) def flownext_ConditionalBranch(self,branch,curblock): @@ -168,8 +159,3 @@ def flownext_EndBranch(self,branch,curblock): branch = Branch([branch.returnvalue], self.endblock) self.flownext_Branch(branch,curblock) - - def unify(self,oldannotations,annotations): - return [ ann for ann in oldannotations if ann in annotations] - - Added: pypy/trunk/src/pypy/translator/annset.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/annset.py Thu Oct 9 14:17:22 2003 @@ -0,0 +1,230 @@ +import weakref +from pypy.translator.flowmodel import * + + +class Cell: + """A logical variable. A Cell is an initially empty place that can + later contain a Variable or a Constant.""" + + # a Cell is "empty" if self.content is None, + # a Cell is "ground" otherwise. Once a Cell is ground its content + # cannot be changed any more. + + # Multiple empty Cells can be "shared"; a group of shared Cells act + # essentially like a single Cell in that setting one Cell content + # will give all Cells in the group the same content. + + def __init__(self): + self.content = None + self.shared = [] # list of weakrefs to Cells + # defining a group of shared cells + + def __repr__(self): + if self.content is None: + first = self.cellsingroup()[0] + return '' % (id(first),) + else: + return '' % (self.content,) + + def __eq__(self, other): + "Two sharing cells are identical." + if isinstance(other, Cell): + return self.is_shared(other) + else: + return self.content == other + + def __ne__(self, other): + return not (self == other) + + def cellsingroup(self): + if self.shared: + l = [s() for s in self.shared] + assert self in l + return [c for c in l if c is not None] + else: + return [self] + + def getsharelist(self): + if not self.shared: + self.shared = [weakref.ref(self)] + return self.shared + + def get(self): + "Return the content of the Cell, or the Cell itself if empty." + if self.content is None: + return self + else: + return self.content + + def set(self, content): + if isinstance(content, Cell): + self.share(content) + elif self.content is None: + for c in self.cellsingroup(): + c.content = content + elif self.content != content: + raise ValueError, "cannot change the content of %r" % self + + def is_shared(self, other): + "Test if two cells are shared." + return self.shared is other.shared + + def share(self, other): + "Make two Cells share content." + if not self.is_shared(other): + if self.content is not None: + other.set(self.content) + elif other.content is not None: + self.set(other.content) + lst1 = self.getsharelist() + lst2 = other.getsharelist() + for s in lst2: + c = s() + if c is not None: + c.shared = lst1 + lst1.append(s) + + +class AnnotationSet: + + def __init__(self, annlist=[]): + self.byfunctor = {} + for ann in annlist: + self.add(ann) + + def copy(self): + a = AnnotationSet() + for functor, lst in self.byfunctor.items(): + a.byfunctor[functor] = lst[:] + return a + + def __repr__(self): + fulllist = list(self.enumerate()) + if fulllist: + lines = (['']) + else: + lines = ['' % (id(self),)] + return '\n'.join(lines) + + def __len__(self): + result = 0 + for lst in self.byfunctor.values(): + result += len(lst) + return result + + def match(self, pattern): + """Test if the annotation 'pattern' is present in the set. + This function sets all empty Cells of 'pattern', but it does not + change Cells in 'self'. All Cells of 'pattern' must be fresh.""" + functor = pattern.opname, len(pattern.args) + for ann in self.byfunctor.get(functor, []): + if same_functor_assign(pattern, ann): + return True + return False + + def intersect(self, otherset): + """Kill annotations in 'self' that are not present in 'otherset'. + It may set some Cells in 'self', but it does not change 'otherset'.""" + for annlist in self.byfunctor.values(): + for i in range(len(annlist)-1, -1, -1): + ann = annlist[i] + if not otherset.match(ann): + del annlist[i] + + def add(self, pattern): + """Add 'pattern' into 'self'. It may set some Cells in 'self' instead + of adding a new entry.""" + functor = pattern.opname, len(pattern.args) + annlist = self.byfunctor.setdefault(functor, []) + for ann in annlist: + if same_functor_assign(ann, pattern): + pattern = ann + break + else: + annlist.append(pattern) + + def enumerate(self, renaming=None): + """Yield a copy of all annotations in the set, possibly renaming + their variables according to a map {Variable: [list-of-Variables]}.""" + if renaming is None: + def renameall(list_w): + return [list_w] + else: + def rename(w): + if isinstance(w,Constant): + return [w] + else: + return renaming.get(w, []) + def renameall(list_w): + if list_w: + for w in rename(list_w[0]): + for tail_w in renameall(list_w[1:]): + yield [w] + tail_w + else: + yield [] + for lst in self.byfunctor.values(): + for ann in lst: + # we translate a single SpaceOperation(...) into either + # 0 or 1 or multiple ones, by replacing each variable + # used in the original operation by (in turn) any of + # the variables it can be renamed into + for list_w in renameall([ann.result] + ann.args): + result = list_w[0] + args = list_w[1:] + yield SpaceOperation(ann.opname,args,result) + + __iter__ = enumerate + + ### convenience methods ### + + def set_type(self, v, type): + self.add(SpaceOperation('type', [v], Constant(type))) + + def get_type(self, v): + if isinstance(v, Constant): + return type(v.value) + c = Cell() + self.match(SpaceOperation('type', [v], c)) + if isinstance(c.content, Constant): + return c.content.value + else: + return None + + def get_opresult(self, opname, args): + c = Cell() + self.match(SpaceOperation(opname, args, c)) + if isinstance(c.content, Constant): + return c.content.value + else: + return None + + +def annotation_assign(ann1, ann2): + """Assignment (ann1 = ann2). All empty cells in 'ann1' are set to the + value found in 'ann2'. Returns False if the two annotations are not + compatible.""" + functor1 = ann1.opname, len(ann1.args) + functor2 = ann2.opname, len(ann2.args) + return functor1 == functor2 and same_functor_assign(ann1, ann2) + +def same_functor_assign(ann1, ann2): + """Assignment (ann1 = ann2). All empty cells in 'ann1' are set to the + value found in 'ann2'. Returns False if the variables and constants + in the two annotations are not compatible. Assumes that the two + annotations have the same functor.""" + for a1, a2 in zip(ann1.args + [ann1.result], + ann2.args + [ann2.result]): + v1 = a1.get() + if not isinstance(v1, Cell): + v2 = a2.get() + if not isinstance(v2, Cell) and v2 != v1: + return False + # match! Set the Cells of ann1... + for a1, a2 in zip(ann1.args + [ann1.result], + ann2.args + [ann2.result]): + v1 = a1.get() + if isinstance(v1, Cell): + v1.set(a2) + return True Added: pypy/trunk/src/pypy/translator/autopath.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/autopath.py Thu Oct 9 14:17:22 2003 @@ -0,0 +1,78 @@ +""" +self cloning, automatic path configuration + +copy this into any subdirectory of pypy from which scripts need +to be run, typically all of the test subdirs. +The idea is that any such script simply issues + + import autopath + +and this will make sure that the parent directory containing "pypy" +is in sys.path. + +If you modify the master "autopath.py" version (in pypy/tool/autopath.py) +you can directly run it which will copy itself on all autopath.py files +it finds under the pypy root directory. + +This module always provides these attributes: + + pypydir pypy root directory path + this_dir directory where this autopath.py resides + +""" + + +def __dirinfo(part): + """ return (partdir, this_dir) and insert parent of partdir + into sys.path. If the parent directories dont have the part + an EnvironmentError is raised.""" + + import sys, os + try: + head = this_dir = os.path.abspath(os.path.dirname(__file__)) + except NameError: + head = this_dir = os.path.abspath(os.path.dirname(sys.argv[0])) + + while head: + partdir = head + head, tail = os.path.split(head) + if tail == part: + sys.path = [p for p in sys.path if not p.startswith(head)] + if head not in sys.path: + sys.path.insert(0, head) + return partdir, this_dir + + raise EnvironmentError, "'%s' missing in '%r'" % (pathpart,this_path) + +def __clone(): + """ clone master version of autopath.py into all subdirs """ + from os.path import join, walk + if not this_dir.endswith(join('pypy','tool')): + raise EnvironmentError("can only clone master version " + "'%s'" % join(pypydir, 'tool',_myname)) + + + def sync_walker(arg, dirname, fnames): + if _myname in fnames: + fn = join(dirname, _myname) + f = open(fn, 'rwb+') + try: + if f.read() == arg: + print "checkok", fn + else: + print "syncing", fn + f = open(fn, 'w') + f.write(arg) + finally: + f.close() + s = open(join(pypydir, 'tool', _myname), 'rb').read() + walk(pypydir, sync_walker, s) + +_myname = 'autopath.py' + +# set guaranteed attributes + +pypydir, this_dir = __dirinfo('pypy') + +if __name__ == '__main__': + __clone() Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Thu Oct 9 14:17:22 2003 @@ -44,6 +44,18 @@ self.operations = tuple(self.operations) # should no longer change self.branch = branch + def getlocals(self): + locals = {} + for arg in self.input_args: + locals[arg] = True + for op in self.operations: + for arg in op.args: + if isinstance(arg, Variable): + locals[arg] = True + if isinstance(op.result, Variable): + locals[op.result] = True + return locals + class Variable: def __init__(self, pseudoname): self.pseudoname = pseudoname @@ -51,12 +63,18 @@ def __repr__(self): return "<%s>" % self.pseudoname + def get(self): + return self + class Constant: def __init__(self, value): self.value = value def __eq__(self, other): - return type(other) is type(self) and self.value == other.value + return isinstance(other, Constant) and self.value == other.value + + def __ne__(self, other): + return not (self == other) def __hash__(self): return hash(self.value) @@ -64,6 +82,9 @@ def __repr__(self): return str(self.value) + def get(self): + return self + class SpaceOperation: def __init__(self, opname, args, result): self.opname = opname @@ -76,6 +97,9 @@ self.args == other.args and self.result == other.result) + def __ne__(self, other): + return not (self == other) + def __hash__(self): return hash((self.opname,tuple(self.args),self.result)) Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Thu Oct 9 14:17:22 2003 @@ -4,7 +4,7 @@ """ from pypy.interpreter.baseobjspace import ObjSpace from pypy.translator.flowmodel import * -from pypy.translator.annotation import Annotator, set_type, get_type +from pypy.translator.annotation import Annotator class Op: def __init__(self, operation, gen, block): @@ -107,16 +107,20 @@ oparity[opname] = arity self.ops = ops self.oparity = oparity - self.annotations = {} + self.variables_ann = {} def annotate(self, input_arg_types): a = Annotator(self.functiongraph) - self.annotations = a.build_types(input_arg_types) + a.build_types(input_arg_types) a.simplify_calls() + self.setannotator(a) + + def setannotator(self, annotator): + self.variables_ann = annotator.get_variables_ann() def emitcode(self): self.blockids = {} - self.variablelocations = {} + #self.variablelocations = {} self.lines = [] self.indent = 0 self.gen_Graph() @@ -142,7 +146,7 @@ self.putline("def %s(%s):" % (fun.functionname, params)) self.indent += 1 #self.putline("# %r" % self.annotations) - for var in self.variablelocations: + for var in self.variables_ann: if var not in fun.startblock.input_args: decl = self._vardecl(var) if decl: @@ -151,9 +155,11 @@ self.lines.extend(functionbodylines) def get_type(self, var): - block = self.variablelocations.get(var) - ann = self.annotations.get(block, []) - return get_type(var, ann) + if var in self.variables_ann: + ann = self.variables_ann[var] + return ann.get_type(var) + else: + return None def get_varname(self, var): if self.get_type(var) == int: @@ -180,7 +186,7 @@ def _str(self, obj, block): if isinstance(obj, Variable): - self.variablelocations[obj] = block + #self.variablelocations[obj] = block return self.get_varname(obj) elif isinstance(obj, Constant): try: Modified: pypy/trunk/src/pypy/translator/test/test_annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_annotation.py (original) +++ pypy/trunk/src/pypy/translator/test/test_annotation.py Thu Oct 9 14:17:22 2003 @@ -3,7 +3,7 @@ from pypy.tool import test from pypy.tool.udir import udir -from pypy.translator.annotation import Annotator, set_type, get_type +from pypy.translator.annotation import Annotator from pypy.translator.flowmodel import * class AnnonateTestCase(test.IntTestCase): @@ -44,11 +44,10 @@ endbranch) fun = FunctionGraph(block, "f") a = Annotator(fun) - input_ann = [] - set_type(fun.get_args()[0], int, input_ann) - a.build_annotations(input_ann) - end_var, end_ann = a.end_annotations() - self.assertEquals(get_type(end_var, end_ann), int) + a.build_types([int]) + end_var = a.get_return_value() + end_ann = a.get_variables_ann()[end_var] + self.assertEquals(end_ann.get_type(end_var), int) def test_while(self): """ @@ -81,11 +80,10 @@ fun = FunctionGraph(startblock, "f") a = Annotator(fun) - input_ann = [] - set_type(fun.get_args()[0], int, input_ann) - a.build_annotations(input_ann) - end_var, end_ann = a.end_annotations() - self.assertEquals(get_type(end_var, end_ann), int) + a.build_types([int]) + end_var = a.get_return_value() + end_ann = a.get_variables_ann()[end_var] + self.assertEquals(end_ann.get_type(end_var), int) def test_while_sum(self): """ @@ -125,12 +123,11 @@ fun = FunctionGraph(startblock, "f") a = Annotator(fun) - input_ann = [] - set_type(fun.get_args()[0], int, input_ann) #import sys; print >> sys.stderr, a.build_annotations(input_ann) - a.build_annotations(input_ann) - end_var, end_ann = a.end_annotations() - self.assertEquals(get_type(end_var, end_ann), int) + a.build_types([int]) + end_var = a.get_return_value() + end_ann = a.get_variables_ann()[end_var] + self.assertEquals(end_ann.get_type(end_var), int) def test_simplify_calls(self): a = self.make_ann(f_calls_g) Added: pypy/trunk/src/pypy/translator/test/test_annset.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/test_annset.py Thu Oct 9 14:17:22 2003 @@ -0,0 +1,237 @@ + +import autopath +from pypy.tool import test + +from pypy.translator.annset import Cell, AnnotationSet +from pypy.translator.flowmodel import Variable, Constant, SpaceOperation + + +class TestCell(test.IntTestCase): + + def test_set(self): + c1 = Cell() + v1 = Variable('v1') + c1.set(v1) + self.assertEquals(c1.get(), v1) + c2 = Cell() + k2 = Constant(123) + c2.set(k2) + self.assertEquals(c2.get(), k2) + self.assertRaises(ValueError, c1.set, k2) + self.assertRaises(ValueError, c2.set, v1) + self.assertRaises(ValueError, c1.set, c2) + self.assertRaises(ValueError, c2.set, c1) + + def test_share1(self): + k1 = Constant(-123) + c1 = Cell() + c2 = Cell() + c1.share(c2) + c2.set(k1) + self.assertEquals(c1.get(), k1) + self.assertEquals(c2.get(), k1) + + def test_share2(self): + k1 = Constant(-123) + c1 = Cell() + c2 = Cell() + c2.set(k1) + c1.share(c2) + self.assertEquals(c1.get(), k1) + self.assertEquals(c2.get(), k1) + + def test_share3(self): + k1 = Constant(-123) + c1 = Cell() + c2 = Cell() + c1.share(c2) + c1.set(k1) + self.assertEquals(c1.get(), k1) + self.assertEquals(c2.get(), k1) + + def test_share3(self): + k1 = Constant(-123) + c1 = Cell() + c2 = Cell() + c1.set(k1) + c1.share(c2) + self.assertEquals(c1.get(), k1) + self.assertEquals(c2.get(), k1) + + def test_is_shared(self): + c1 = Cell() + c2 = Cell() + c3 = Cell() + c4 = Cell() + for a in (c1,c2,c3,c4): + for b in (c1,c2,c3,c4): + if a is not b: + self.failIfEqual(a, b) + c1.share(c2) + c4.share(c2) + c1.share(c3) + for a in (c1,c2,c3,c4): + for b in (c1,c2,c3,c4): + self.assert_(a.is_shared(b)) + self.assertEquals(a, b) + + +class TestAnnotationSet(test.IntTestCase): + + def setUp(self): + self.v1 = Variable('v1') + self.v2 = Variable('v2') + self.v3 = Variable('v3') + self.k1 = Constant(102938) + self.k2 = Constant('foobar') + self.k3 = Constant(-2) + self.k4 = Constant(102938) + + def assertSameSet(self, a, b): + a = list(a) + b = list(b) + # try to reorder a to match b, without failing if the lists + # are different -- this will be checked by assertEquals() + for i in range(len(b)): + try: + j = i + a[i:].index(b[i]) + except ValueError: + pass + else: + a[i], a[j] = a[j], a[i] + self.assertEquals(a, b) + + def test_init(self): + lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), + SpaceOperation('neg', [self.v2], self.v3)] + a = AnnotationSet(lst) + self.assertSameSet(a, lst) + + def test_add(self): + lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), + SpaceOperation('neg', [self.v2], self.v3)] + a = AnnotationSet() + a.add(lst[1]) + a.add(lst[0]) + self.assertSameSet(a, lst) + a.add(lst[0]) + self.assertSameSet(a, lst) + a.add(lst[1]) + self.assertSameSet(a, lst) + + def test_add2(self): + c1 = Cell() + c2 = Cell() + c3 = Cell() + c4 = Cell() + c5 = Cell() + c6 = Cell() + c7 = Cell() + c8 = Cell() + c9 = Cell() + a = AnnotationSet() + op = SpaceOperation('add', [c1, c2], c3) + a.add(op) + self.assertSameSet(a, [op]) + op = SpaceOperation('add', [c4, self.k1], c5) + a.add(op) + self.assertSameSet(a, [op]) + op = SpaceOperation('add', [c6, self.k4], self.v3) + a.add(op) + self.assertSameSet(a, [op]) + op = SpaceOperation('add', [self.v1, self.k1], self.v3) + a.add(op) + self.assertSameSet(a, [op]) + + a.add(SpaceOperation('add', [self.v1, c7], self.v3)) + self.assertSameSet(a, [op]) + a.add(SpaceOperation('add', [self.v1, c9], c8)) + self.assertSameSet(a, [op]) + + def test_match1(self): + lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), + SpaceOperation('neg', [self.v1], self.k2), + SpaceOperation('neg', [self.v2], self.v3)] + a = AnnotationSet(lst) + for ann in lst: + self.assert_(a.match(ann)) + c = Cell() + self.assert_(a.match(SpaceOperation('add', [self.v1, self.k4], c))) + self.assertEquals(c.get(), self.v2) + c = Cell() + c2 = Cell() + self.assert_(a.match(SpaceOperation('add', [self.v1, c], c2))) + self.assertEquals(c.get(), self.k1) + self.assertEquals(c2.get(), self.v2) + c = Cell() + self.assert_(a.match(SpaceOperation('neg', [c], self.v3))) + self.assertEquals(c.get(), self.v2) + c = Cell() + self.failIf(a.match(SpaceOperation('add', [self.v2, self.k1], self.v2))) + self.failIf(a.match(SpaceOperation('add', [self.v2, self.k1], c))) + + def test_match2(self): + c1 = Cell() + c2 = Cell() + c3 = Cell() + c4 = Cell() + c4.share(c3) + c1.set(self.k4) + lst = [SpaceOperation('add', [self.v1, c1], self.v2), + SpaceOperation('neg', [self.v1], c2), + SpaceOperation('neg', [self.v2], c4)] + a = AnnotationSet(lst) + self.assert_(a.match(SpaceOperation('add', [self.v1, self.k1], self.v2))) + c = Cell() + self.assert_(a.match(SpaceOperation('add', [self.v1, self.k1], c))) + self.assertEquals(c.get(), self.v2) + c = Cell() + self.assert_(a.match(SpaceOperation('neg', [self.v2], c))) + self.assert_(c.is_shared(c4)) + self.assert_(c.is_shared(c3)) + self.assert_(not c.is_shared(c2)) + self.assert_(not c.is_shared(c1)) + + self.assertEquals(c1.get(), self.k1) + self.assertEquals(c2.get(), None) + self.assertEquals(c3.get(), None) + self.assertEquals(c4.get(), None) + + def test_enumerate(self): + lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), + SpaceOperation('neg', [self.v1], self.k2), + SpaceOperation('neg', [self.v2], self.v3)] + a = AnnotationSet(lst) + self.assertSameSet(list(a.enumerate()), lst) + + def test_renaming(self): + lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), + SpaceOperation('neg', [self.v1], self.k2), + SpaceOperation('neg', [self.v2], self.v3)] + renaming = {self.v1: [self.v3], + self.v2: [self.v2, self.v1]} + lst2 = [SpaceOperation('add', [self.v3, self.k1], self.v2), + SpaceOperation('add', [self.v3, self.k1], self.v1), + SpaceOperation('neg', [self.v3], self.k2)] + a = AnnotationSet(lst) + self.assertSameSet(list(a.enumerate(renaming)), lst2) + + def test_intersect(self): + lst = [SpaceOperation('type', [self.v2], self.k1), + SpaceOperation('type', [self.v1], self.k1), + SpaceOperation('type', [self.v3], self.k1), + ] + lst2 = [SpaceOperation('type', [self.v2], self.k4), + SpaceOperation('type', [self.v1], self.k4), + SpaceOperation('add', [self.v1, self.v2], self.v3), + ] + lst3 = [SpaceOperation('type', [self.v2], self.k1), + SpaceOperation('type', [self.v1], self.k1), + ] + a = AnnotationSet(lst) + a.intersect(AnnotationSet(lst2)) + self.assertSameSet(a, lst3) + + +if __name__ == '__main__': + test.main() Added: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/translator.py Thu Oct 9 14:17:22 2003 @@ -0,0 +1,102 @@ +""" +Glue script putting together the pieces of the translator. +Can also be used for interactive testing of the translator, when run as: + + python -i translator.py + +Example: + + def f1(x): + total = 0 + for i in range(1, x+1): + total = total + i + return total + + t = Translator(f1) + t.gv() # show the control flow graph -- requires 'dot' and 'gv' + + t.simplify() + t.gv() + print t.pyrex() + + a = t.annotate([int]) # the list is the input args types + print t.pyrex() + + a.simplify() # simplifications done by the Annotator + print t.pyrex() + + f = t.compile() + print f(10) +""" + +import autopath + +from pypy.translator.flowmodel import * +from pypy.translator.annset import AnnotationSet, Cell +from pypy.translator.annotation import Annotator +from pypy.translator.simplify import simplify_graph +from pypy.translator.genpyrex import GenPyrex +from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.objspace.flow import FlowObjSpace + + +class Translator: + # XXX this class should handle recursive analysis of functions called + # by the entry point function. + + def __init__(self, func): + self.entrypoint = func + self.annotator = None + space = FlowObjSpace() + self.flowgraph = space.build_flow(func) + try: + import inspect + self.flowgraph.source = inspect.getsource(func) + except IOError: + pass # e.g. when func is defined interactively + + def gv(self): + """Show the control flow graph -- requires 'dot' and 'gv'.""" + import os + from pypy.translator.test.make_dot import make_dot + from pypy.tool.udir import udir + dest = make_dot(self.flowgraph, udir, 'ps') + os.system('gv %s' % str(dest)) + + def simplify(self): + self.flowgraph = simplify_graph(self.flowgraph) + + def annotate(self, input_args_types): + self.annotator = Annotator(self.flowgraph) + self.annotator.build_types(input_args_types) + return self.annotator + + def pyrex(self): + g = GenPyrex(self.flowgraph) + if self.annotator: + g.setannotator(self.annotator) + return g.emitcode() + + def compile(self): + from pypy.tool.udir import udir + name = self.entrypoint.func_name + pyxcode = self.pyrex() + mod = make_module_from_pyxstring(name, udir, pyxcode) + return getattr(mod, name) + + +if __name__ == '__main__': + def f1(x): + total = 0 + for i in range(1, x+1): + total = total + i + return total + + def f2(x): + total = 0 + while x > 0: + total = total + x + x = x - 1 + return total + + print __doc__ From tismer at codespeak.net Thu Oct 9 14:17:29 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Thu, 9 Oct 2003 14:17:29 +0200 (MEST) Subject: [pypy-svn] rev 1642 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031009121729.A8E835AC33@thoth.codespeak.net> Author: tismer Date: Thu Oct 9 14:17:27 2003 New Revision: 1642 Added: pypy/trunk/doc/funding/abstract.asc - copied unchanged from rev 1639, pypy/trunk/doc/funding/abstract.txt Removed: pypy/trunk/doc/funding/abstract.txt Modified: pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/B4.3_participants.txt pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/wp-tablebegin.asc pypy/trunk/doc/funding/wp-tableend.asc pypy/trunk/doc/funding/wp-toptable.asc Log: renamed abstract to abstract.asc for consistency, small corrections to reST, small changes to the doc production. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Thu Oct 9 14:17:27 2003 @@ -47,7 +47,6 @@ :DELETE:END -include doc/funding/abstract.txt here. - +.. include:: abstract.asc FIXME_NICO FIXME_LAURA check this Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Thu Oct 9 14:17:27 2003 @@ -639,8 +639,8 @@ http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf [kiczales97aspectoriented.pdf] Gregor Kiczales and John Lamping and - Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc - Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 +Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc +Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf :DELETE:END Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Thu Oct 9 14:17:27 2003 @@ -1,3 +1,5 @@ +:DELETE:BEGIN + FIXME EVERYBODY -- CVs FIXME JACOB FIXME LAURA MAKE SURE THIS GETS DONE @@ -17,6 +19,11 @@ You have to show that he has experience of successful international project management. Emphasise this aspect. +:DELETE:END + +Description of the participants +---------------------------------- + Jacob Hall?n, 45, comes to his position as co-founder and CTO of AB Strakt from being a Technical Manager and international standards expert at the LIBRIS Department of the Royal Library. He was the @@ -67,8 +74,8 @@ support; algorithmic and optimization expertise; elected Director of Python Software Foundation (PSF) since its inception. -Alex Martelli: Best-selling author of _Python in a Nutshell_. Co-editor -of _Python Cookbook_ . ActiveState 2002 "Activators' Choice" +Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor +of *Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, Python langauge developer, PBF board member. Currently works for AB Strakt, developing the CAPS framework. Also consults for other firms on Python and O-O design, teaching, coding, feasibility Deleted: /pypy/trunk/doc/funding/abstract.txt ============================================================================== --- /pypy/trunk/doc/funding/abstract.txt Thu Oct 9 14:17:27 2003 +++ (empty file) @@ -1,33 +0,0 @@ -The PyPy project will build a portable, fast, flexible, context-aware -programming platform supporting Very-High Level Languages (VHLL) to -yield significant productivity gains in software development. PyPy's -flexible, modular runtime system will be well-suited for networked, -embedded, and mobile devices. - -VHLLs' high semantic level can help extend context-awareness, beyond -the basics (time, location, identity), to a wider variety of context -information and actions. However, VHLLs can often produce slow or large -application and supporting code, hampering their use for small devices. -We will solve this problem via the innovative concept of ObjectSpaces, -high-level formulations of language interpreter components. Explicit, -clear separation of parts yields modularity and flexibility. -ObjectSpaces are themselves coded in a VHLL and can be specialised for -execution speed, memory consumption, or other parameters. - -PyPy will use and target the widely-used Open Source programming -language Python, first developed in 1990 at CWI (Centrum voor Wiskunde -en Informatica) in the Netherlands. By producing the new reference -version of the language, we will have a large impact on the estimated -175,000 Python programmers worldwide. Emphasizing simplicity and -readability, Python has wider appeal among non-programmers, and -particularly among women, than languages perceived as needing extensive -mathematical training and ability. An improved Python can thus help -somewhat in promoting social cohesion and gender equality. - -PyPy will leverage known European strengths in formal methods and -languages, operating by a novel Agile Software Development methodology -for distributed development, including short, high-productivity -meetings known as "Sprints". Systematic efforts to spread the knowledge -produced by the project among academics, SMEs, industry, and other -interested parties, will ensure the project's results and achievements -are fully exploited. Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Thu Oct 9 14:17:27 2003 @@ -3,7 +3,8 @@ tempfiles = [] class tempfile(file): def __init__(self, name, *args, **kw): - tempfiles.append(name) + if name not in tempfiles: + tempfiles.append(name) file.__init__(self, name, *args, **kw) def get_file_list(): @@ -163,7 +164,7 @@ def copy_ascfiles(): for name in os.listdir(".."): - if name.startswith("wp-") and name.endswith(".asc"): + if name.endswith(".asc"): tempfile(name, "w").write(file(os.path.join("..", name)).read()) def copy_binfiles(): Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/wp-tablebegin.asc ============================================================================== --- pypy/trunk/doc/funding/wp-tablebegin.asc (original) +++ pypy/trunk/doc/funding/wp-tablebegin.asc Thu Oct 9 14:17:27 2003 @@ -1,6 +1,4 @@ -.. start a surounding single table cell with a minimum height. - .. raw:: html



Modified: pypy/trunk/doc/funding/wp-tableend.asc ============================================================================== --- pypy/trunk/doc/funding/wp-tableend.asc (original) +++ pypy/trunk/doc/funding/wp-tableend.asc Thu Oct 9 14:17:27 2003 @@ -1,6 +1,4 @@ -.. end a single surrounding table. - .. raw:: html

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
strakthacker_strakt_124
straktpm_strakt_18
TOTALSTRAKT32160.0 kEUR9.30 %
cmpm_cm_121
TOTALCM21105.0 kEUR6.10 %
logilabhacker_logilab_29
logilabhacker_logilab_122
TOTALLOGILAB31155.0 kEUR9.01 %
ushhacker_ush_124
TOTALUSH24120.0 kEUR6.98 %
dfkihacker_dfki_26
dfkihacker_dfki_120
dfkipm_dfki_18
TOTALDFKI34170.0 kEUR9.88 %
pbfhacker_pbf_824
pbfhacker_pbf_624
pbfhacker_pbf_724
pbfhacker_pbf_424
pbfhacker_pbf_516
pbfhacker_pbf_218
pbfhacker_pbf_324
pbfhacker_pbf_124
TOTALPBF178890.0 kEUR51.74 %
mpihacker_mpi_124
TOTALMPI24120.0 kEUR6.98 %
TOTALpersonnel3441720.0 kEUR
TOTALsprints288 kEURone sprint every two months for two years and 12 persons at 2 kEUR each
TOTALmeetings84 kEUR3 meetings per year for 7 partners at 2000 EUR per participant
TOTALmanagement105.0 kEURadministrative tasks for each partner == 4 weeks over six months periods
+

TOTAL BUDGET 2113.0 kEUR

+ Added: pypy/trunk/doc/funding/nico/project_gantt.png ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/nico/project_planning.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/project_planning.xml Sat Oct 11 09:32:06 2003 @@ -0,0 +1,156 @@ + + + + + + + + +24 +2004/01/01 + + + + + + + + +24 +2004/01/01 + + + + + +24 +2004/01/01 + + + + + + + + +9 +2004/01/01 + + + + + + + + + + + +9 +2004/01/01 + + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + + + +9 + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + +15 + + + + + + +6 +wp7 +wp8 + + + + + + + + +6 +wp7 +wp8 + + + + + + + + +24 +2004/01/01 + + + + + + + Added: pypy/trunk/doc/funding/nico/project_resources.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/project_resources.xml Sat Oct 11 09:32:06 2003 @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From sanxiyn at codespeak.net Sat Oct 11 10:10:30 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 10:10:30 +0200 (MEST) Subject: [pypy-svn] rev 1696 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031011081030.70A1A5A5D3@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 10:10:29 2003 New Revision: 1696 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/buildclisp.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/translator.py Log: Now GenCL has emitcode() interface, and integrated into translator.py. (Try 'print translator.cl()') Tests test_cltrans iff environment variable PYPY_CL is defined. Otherwise skips by raising TestSkip. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sat Oct 11 10:10:29 2003 @@ -8,15 +8,21 @@ self.args = op.args self.result = op.result def __call__(self): - meth_name = "op_" + self.opname - meth_default = self.op_default - meth = getattr(self, meth_name, meth_default) - meth() + if self.opname in self.binary_ops: + self.op_binary(self.opname) + else: + self.op_default() + binary_ops = { + "add": "+", + "mod": "mod", + } def op_default(self): - print self.opname, "is missing" - def op_mod(self): - result, arg1, arg2 = map(self.str, (self.result,) + self.args) - print "(setq", result, "(mod", arg1, arg2, "))" + print "; Op", self.opname, "is missing" + def op_binary(self, op): + s = self.str + result, (arg1, arg2) = self.result, self.args + cl_op = self.binary_ops[op] + print "(setq", s(result), "(", cl_op, s(arg1), s(arg2), "))" class GenCL: def __init__(self, fun): @@ -25,6 +31,25 @@ def str(self, obj): if isinstance(obj, Variable): return obj.pseudoname + elif isinstance(obj, Constant): + return self.conv(obj.value) + else: + return "#<" # unreadable + def conv(self, val): + if val is None: + return "nil" + elif isinstance(val, int): + return str(val) + else: + return "#<" # unreadable + def emitcode(self): + import sys + from cStringIO import StringIO + out = StringIO() + sys.stdout = out + self.emit() + sys.stdout = sys.__stdout__ + return out.getvalue() def emit(self): self.emit_defun(self.fun) def emit_defun(self, fun): Modified: pypy/trunk/src/pypy/translator/test/buildclisp.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildclisp.py (original) +++ pypy/trunk/src/pypy/translator/test/buildclisp.py Sat Oct 11 10:10:29 2003 @@ -10,19 +10,16 @@ # For now, let's return int only return int(s) -def make_cl_func(func, path): +def make_cl_func(func, cl, path): fun = Space().build_flow(func) gen = GenCL(fun) - out = StringIO() - sys.stdout = out - gen.emit() - sys.stdout = sys.__stdout__ + out = gen.emitcode() fp = path.join("test.lisp") i = 0 while fp.exists(): fp = path.join("test%d.lisp" % i) i += 1 - fp.write(out.getvalue()) + fp.write(out) fname = fp.path def _(*args): fp = file(fname, "a") @@ -31,6 +28,6 @@ print >>fp, str(arg), print >>fp, "))" fp.close() - output = exec_cmd("clisp %s" % fname) + output = exec_cmd("%s %s" % (cl, fname)) return readlisp(output) return _ Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 11 10:10:29 2003 @@ -5,6 +5,14 @@ class GenCLTestCase(test.IntTestCase): + def setUp(self): + import os + cl = os.getenv("PYPY_CL") + if cl: + self.cl = cl + else: + raise test.TestSkip + #___________________________________ def my_gcd(a, b): r = a % b @@ -13,11 +21,8 @@ b = r r = a % b return b - def XXXtest_gcd(self): - # disabled because it's rude to fail just because the clisp - # common lisp implementation isn't installed. - # (will arrange to skip the test in that case eventually) -- mwh - cl_gcd = make_cl_func(self.my_gcd, udir) + def test_gcd(self): + cl_gcd = make_cl_func(self.my_gcd, self.cl, udir) self.assertEquals(cl_gcd(96, 64), 32) if __name__ == '__main__': Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sat Oct 11 10:10:29 2003 @@ -36,6 +36,7 @@ from pypy.translator.annotation import Annotator from pypy.translator.simplify import simplify_graph from pypy.translator.genpyrex import GenPyrex +from pypy.translator.gencl import GenCL from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring from pypy.objspace.flow import FlowObjSpace @@ -77,6 +78,10 @@ g.setannotator(self.annotator) return g.emitcode() + def cl(self): + g = GenCL(self.flowgraph) + return g.emitcode() + def compile(self): from pypy.tool.udir import udir name = self.entrypoint.func_name From sanxiyn at codespeak.net Sat Oct 11 10:23:41 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 10:23:41 +0200 (MEST) Subject: [pypy-svn] rev 1697 - pypy/trunk/src/pypy/translator/test Message-ID: <20031011082341.74FA95A5D3@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 10:23:40 2003 New Revision: 1697 Added: pypy/trunk/src/pypy/translator/test/buildcl.py (props changed) - copied unchanged from rev 1696, pypy/trunk/src/pypy/translator/test/buildclisp.py Removed: pypy/trunk/src/pypy/translator/test/buildclisp.py Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: Rename buildclisp to buildcl, for it is now (hopefully) not clisp specific. Deleted: /pypy/trunk/src/pypy/translator/test/buildclisp.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/buildclisp.py Sat Oct 11 10:23:40 2003 +++ (empty file) @@ -1,33 +0,0 @@ -import autopath - -import sys -from cStringIO import StringIO -from pypy.objspace.flow import Space -from pypy.translator.gencl import GenCL -from vpath.adapter.process import exec_cmd - -def readlisp(s): - # For now, let's return int only - return int(s) - -def make_cl_func(func, cl, path): - fun = Space().build_flow(func) - gen = GenCL(fun) - out = gen.emitcode() - fp = path.join("test.lisp") - i = 0 - while fp.exists(): - fp = path.join("test%d.lisp" % i) - i += 1 - fp.write(out) - fname = fp.path - def _(*args): - fp = file(fname, "a") - print >>fp, "(write (", fun.functionname, - for arg in args: - print >>fp, str(arg), - print >>fp, "))" - fp.close() - output = exec_cmd("%s %s" % (cl, fname)) - return readlisp(output) - return _ Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 11 10:23:40 2003 @@ -1,7 +1,7 @@ import autopath from pypy.tool import test from pypy.tool.udir import udir -from pypy.translator.test.buildclisp import make_cl_func +from pypy.translator.test.buildcl import make_cl_func class GenCLTestCase(test.IntTestCase): From hpk at codespeak.net Sat Oct 11 10:27:38 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 11 Oct 2003 10:27:38 +0200 (MEST) Subject: [pypy-svn] rev 1698 - pypy/trunk/src/pypy/translator Message-ID: <20031011082738.118275A5D3@thoth.codespeak.net> Author: hpk Date: Sat Oct 11 10:27:37 2003 New Revision: 1698 Modified: pypy/trunk/src/pypy/translator/annset.py Log: the usual fix for armin's use of generators without a future statement (to be python 2.2.x compliant) Modified: pypy/trunk/src/pypy/translator/annset.py ============================================================================== --- pypy/trunk/src/pypy/translator/annset.py (original) +++ pypy/trunk/src/pypy/translator/annset.py Sat Oct 11 10:27:37 2003 @@ -1,3 +1,4 @@ +from __future__ import generators import weakref from pypy.translator.flowmodel import * From arigo at codespeak.net Sat Oct 11 11:38:58 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 11 Oct 2003 11:38:58 +0200 (MEST) Subject: [pypy-svn] rev 1699 - in pypy/trunk/doc/funding: . nico Message-ID: <20031011093858.D744D5ADB5@thoth.codespeak.net> Author: arigo Date: Sat Oct 11 11:38:57 2003 New Revision: 1699 Added: pypy/trunk/doc/funding/budget_summary.html - copied unchanged from rev 1698, pypy/trunk/doc/funding/nico/budget_summary.html Removed: pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt pypy/trunk/doc/funding/nico/ Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/B6.5_workpackage_list.txt pypy/trunk/doc/funding/project_gantt.png pypy/trunk/doc/funding/project_planning.xml pypy/trunk/doc/funding/project_resources.xml Log: Merged nico stuff Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Sat Oct 11 11:38:57 2003 @@ -58,29 +58,33 @@ List of participants -================ ===================== ======================= -Participant no. Participant name Participant short name -================ ===================== ======================= -1 (coordinator) ----------------- --------------------- ----------------------- -2 ----------------- --------------------- ----------------------- -3 ----------------- --------------------- ----------------------- -4 ----------------- --------------------- ----------------------- -etc -================ ===================== ======================= - -Coordinator name +================ ============================================= ======================= +Participant no. Participant name Participant short name +================ ============================================= ======================= +1 (coordinator) DFKI DFKI +---------------- --------------------------------------------- ----------------------- +2 Python Business Forum PBF +---------------- --------------------------------------------- ----------------------- +3 AB Strakt Strakt +---------------- --------------------------------------------- ----------------------- +4 Logilab Logilab +---------------- --------------------------------------------- ----------------------- +5 University of Southampton USH +---------------- --------------------------------------------- ----------------------- +6 ChangeMaker ChangeMaker +---------------- --------------------------------------------- ----------------------- +7 Max-Planck Biology Institute MPI +================ ============================================= ======================= + +Coordinator name Alastair BURT (FIXME) -Coordinator organisation name +Coordinator organisation name DFKI -Coordinator email +Coordinator email burt at dfki.de -Coordinator fax +Coordinator fax FIXME -FIXME_NICO FIXME_LAURA finish up list of partners, see 20031002-meeting-notes.txt +FIXME_NICO .. put this before the TOC Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.5_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Sat Oct 11 11:38:57 2003 @@ -22,32 +22,31 @@ ===== ===================================================== ===== ==== ==== ==== ==== ======== WP01_ Coordination and Management 24 0 24 DFKI ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Project Infrastructure and Tools 24 0 24 PBF et Holger +WP02_ Infrastructure and Tools 24 0 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 6 0 24 PBF (mwh) +WP03_ Synchronisation with Standard Python 6 0 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP04_ The PyPy Core 36 0 9 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 33 0 9 Univ SH +WP05_ The PyPy Translation 33 0 9 USH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP06_ Dynamic Optimisations 36 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- WP07_ Translator Optimisations 27 9 18 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Core Optimisations 24 9 24 Univ SH +WP08_ Core Optimisations 24 9 24 USH ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Language Extensions NC? 9 24 Logilab +WP09_ 24 Logilab ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Application of language extensions NC? 9 24 DFKI +WP10_ 24 DFKI ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Validation of flexibility 27 18 24 PBF +WP13_ Embed in Specialized Hardware 18 9 24 ChangeMaker ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Integration and Configuration 27 18 24 Strakt(?) Samuele +WP11_ Validation: Security, Distribution and Persistence 27 18 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Assess improvements of existing applications NC? 20 24 Logilab +WP12_ Integration and Configuration 27 18 24 PBF ----- ----------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt Martellibot +WP14_ Project Documentation and Dissemination 24 0 24 Strakt ===== ===================================================== ===== ==== ==== ==== ==== ======== -Note: constraint and aspects and type checking go into Langage Extension -semantic web application by DFKI goes to Application of Language Extension \ No newline at end of file +FIXME CHRISTIAN: package renaming (only a couple of them the end, no worry) Deleted: /pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp13_existing_apps.txt Sat Oct 11 11:38:57 2003 +++ (empty file) @@ -1,48 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Assess improvements of existing applications -.. |wp| replace:: WP13 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -XXX write me - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -XXX write me - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Sat Oct 11 11:38:57 2003 @@ -3,6 +3,8 @@ to generate gantt diagrams in image (png?) format FIXME_NICO + +REMARK: cost is in man.month --> @@ -10,75 +12,139 @@ -720 +24 2004/01/01 - + + + + - -270 + +24 2004/01/01 + - -270 + +24 2004/01/01 + + + + - -450 -2004/10/01 + +9 +2004/01/01 + + + + + + + - -270 -2004/10/01 + +9 +2004/01/01 + + + + + + + + +ph1 + - -270 -2004/10/01 + +15 + + - -720 -2004/01/01 + +9 + + + + - -720 -2004/01/01 + +9 + + + + + + + +ph1 + - -720 -2004/01/01 + +15 + + - -720 -2004/01/01 + +9 + + - -720 -2004/01/01 + +15 + + - -720 + +6 +wp7 +wp8 + + + + + + + + +6 +wp7 +wp8 + + + + + + + + +24 2004/01/01 + + + + + \ No newline at end of file Added: pypy/trunk/doc/funding/nico/project_planning.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/project_planning.xml Sat Oct 11 12:48:19 2003 @@ -0,0 +1,156 @@ + + + + + + + + +24 +2004/01/01 + + + + + + + + +24 +2004/01/01 + + + + + +24 +2004/01/01 + + + + + + + + +9 +2004/01/01 + + + + + + + + + + + +9 +2004/01/01 + + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + + + +9 + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + +15 + + + + + + +6 +wp7 +wp8 + + + + + + + + +6 +wp7 +wp8 + + + + + + + + +24 +2004/01/01 + + + + + + + Added: pypy/trunk/doc/funding/nico/pyganttrc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/nico/pyganttrc Sat Oct 11 12:48:19 2003 @@ -0,0 +1,26 @@ +# generic +HEAD = white +CONSTRAINT = black + +# task's color according to its status +TASK_TODO = orange +TASK_READY = orange +TASK_RUN = darkblue +TASK_DONE = darkgray +TASK_PROBLEM = red + +# for odd row +ODD_TITLE = white +ODD_FIELD = white +ODD_WEEKDAY = white +ODD_WEEKEND = wheat +ODD_RESOURCE_USED = darkorange +ODD_RESOURCE_UNAVAILABLE = wheat +# for even row +EVEN_TITLE = wheat +EVEN_FIELD = wheat +EVEN_WEEKDAY = wheat +EVEN_WEEKEND = wheat +EVEN_RESOURCE_USED = darkorange +EVEN_RESOURCE_UNAVAILABLE = wheat + From lac at codespeak.net Sat Oct 11 12:55:28 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 12:55:28 +0200 (MEST) Subject: [pypy-svn] rev 1704 - pypy/trunk/doc/funding Message-ID: <20031011105528.F1ABA5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 12:55:28 2003 New Revision: 1704 Added: pypy/trunk/doc/funding/moreedu.save pypy/trunk/doc/funding/real_B3s Log: so as not to have to take my laptop to work gorp I wanted to save Added: pypy/trunk/doc/funding/moreedu.save ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/moreedu.save Sat Oct 11 12:55:28 2003 @@ -0,0 +1,203 @@ +FIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +ppppppppppppppp \ No newline at end of file Added: pypy/trunk/doc/funding/real_B3s ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/real_B3s Sat Oct 11 12:55:28 2003 @@ -0,0 +1,532 @@ +Potential impact +================ +Python is an extremely popular Very-High-Level, Object-Oriented, +programming language. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. +gramming language. + +It is always difficult to measure how many +people are using a programming language, but of course, we try. +Python is generally ranked the sixth most popular computer language in +the world. Only Java, Visual Basic, C, C++, and Perl are believed to +have more users. + +The Python FAQ, available at the python language home site of +python.org says:: + + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + + Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. ('Python' gives +ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are +the 'bleeding edge' developers, who were interested in the new +release of Python first made available at the end of August. There +are, of course, many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. +About one third of them are using the documentation, which is a +fairly good indicator that they are trying to use the language. +Number of unique IP addresses per month is about 350,000 at this point, +and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +1) One user may use multiple machines (e.g. home & work & cafe) +2) Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +3) Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already dowloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are to be considered +relevant. Speaking of books, sales statistics of *The Essential +Jython* targetted at users of the Python version that compiles to +the Java Virtual Machine indicate that there are at least 10 thousand +Jython users worldwide. + +For comparison, there are something like 12 million programmers world-wide +and roughly 50% of those use Visual Basic (according to International Data +Corp). In March 2002, Borland said Java had about 1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a self-customising PyPy which . We can produce Object Spaces which +implement Aspect Oriented Programming and Design By Contract, hot new +topics in computer science research, but which are rarely seen in +industry because existing popular languages do not support them. +When we are successful, we will have an immediate, large impact as +those 175,000 Python users will all get an improved +implementation of the language. This will have +an immediate direct effect on Eropean competitiveness. Moreover, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME_LAURA -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython?For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +Contributions to Standards +========================== + +There are currently two implementations of Python in common use. The +first one, which we will call CPython, but which is what the world +knows as Python, is a C implementation of the Python Programming +language which compiles to its own virtual machine. The second one is +Jython, a pure-Python implementation which compiles to the Java +virtual machine. There is no ANSI standard or similar for Python. +Right now the de-facto standard for the programming language is +'whatever CPython does'. This is far from ideal, and questions arise, +especially from the developers of Jython as to which CPython language +behaviours are essential to the Python language itself, and which are +mere accidents of this particular implementation. + +For example, the garbage-collection behavior of CPython is implemented +by reference-counting ensuring that an object is finalized as soon as +the last reference to it goes away. That would be extremely +inconvenient (close to impossible) to implement on standard Java +Virtual Machines, which have a deliberately under-specified garbage +collector (it can collect anything it pleases whenever it pleases...). +In this case, the Jython designers had to obtain an explicit ruling +from Guido van Rossum, Python's designer -- who ruled that the +behavior of CPython was 'accidental' in this case, and not intrinsic +to the Python language specification. + +Guido van Rossum has expressed interest in giving PyPy the status of +'implementation standard' (executable specification) of the Python +programming language. PyPy's ObjectSpaces flexibility will be crucial +in distinguishing "accidental" from "designed-in" characteristics. + +(FIXME: I sent Guido mail asking for something quotable. We will see +if he replies.) + +In order to do this we will have to do something which is called +'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design +document providing information to the Python community, or describing +a new feature for Python. There are two kinds of PEPs. A Standards +Track PEP describes a new feature or implementation for Python. An +Informational PEP describes a Python design issue, or provides general +guidelines or information to the Python community, but does not +propose a new feature. If we proposed to make PyPy the reference +standard of the Python language, we would, obviously, have to submit a +Standards Track PEP. + +PEP authors are responsible for collecting community feedback on a PEP +before submitting it for review. A PEP that has not been discussed on +python-list at python.org and/or python-dev at python.org will not be +accepted. After the authors believe that the PEP is ready, they must +inform the PEP editors (currently Barry Warsaw and David Goodger) that +it is ready for review. + +PEPs are reviewed by Guido van Rossum, the language author, and his +chosen consultants, who may accept or reject a PEP or send it back to +the author(s) for revision. + +If Guido van Rossum accepts the PEP, then its status is changed to +'Accepted'. If the reference implementation is not already complete, +it must then be completed. When the reference implementation is +complete and accepted (again by Guido van Rossum), the status will be +changed to 'Final'. In our case, we wouldn't even write the PEP +without having a complete reference implementation, since what we +would be proposing is to make PyPy and not CPython the complete +reference implementation of the language. Thus the expression of +interest from Guido van Rossum is of extreme significance. It is +likely, though not certain, that PyPy will become the standard +reference implementation of the Python language. + +:: + + FIXME + either say 'very likely if all the goals described in the project + are met' or give some more precise conditions, e.g. existence of a + PyPy version largely compatible with existing C extension modules + +The complete details of how to write a PEP are themselves an +Informational PEP -- PEP #1 in fact. Complete details are to be found +in this appendix: + +FIXME include http://www.python.org/peps/pep-0001.html + +Strategic impact + +PyPy will have a significant strategic impact throughout the IT sector. It produces immensely useful, practical results which shall be immediately exploited by Python developers world-wide. While it addresses issues which have hitherto mostly remained the special province of academia, and significantly enhances the State-of-the-Art, it is not a project that will only satisfy intellectual curiosity. + +Python and extremely popular Very-High-Level, Object-Oriented, programming language. It is always difficult to measure how many people are using a programming language, but of course, we try. Python is generally ranked the sixth most popular computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to have more users. + +The Python FAQ, available at the python language home site of python.org says: + +2.1. How many people are using Python? + +Certainly thousands, and quite probably tens of thousands of users. +More are seeing the light each day. The comp.lang.python newsgroup is +very active, but overall there is no accurate estimate of the number +of subscribers or Python users. Jacek Artymiak has created a Python +Users Counter; you can see the current count by visiting +http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + +Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. ('Python' +gives ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', and +in some niches, languages such as PHP, Perl and SQL are popular, but +Python is vastly bigger than the more obscure languages such as +Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are the +'bleeding edge' developers, who were interested in the new release of +Python first made available at the end of August. There are, of +course, many more who simply wait for Python to become available as a +Red Hat, or Debian package, or simply use the version of Python that +came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the language. Number of unique IP addresses per month is about 350,000 at this point, and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + + * One user may use multiple machines (e.g. home & work & cafe) + * Many sites use a firewall that hides the actual IP (and thus combines multiple users into one) + * Not all Python users go to python.org every month (or at least not the Documentation page), because they have already dowloaded the documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active Python users in the world. At least half of them are in Europe, if O'Reilly's sales statistics for their popular books Learning Python, Python in a Nutshell and The Python Cookbook are any indication. Speaking of books, sales statistics of The Essential Jython, targetted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. + +For comparison, there are something like 12 million programmers +world-wide and roughly 50% of those use Visual Basic (according to +International Data Corp). In March 2002, Borland said Java had about +1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python interpreter +customised for a very small amount of available memory. Or one with +speed enhancements only possible because there is a huge amount of +memory available. Or a PyPy interpreter which will be executed on +several machines but offer a single distributed computation space and +balances the load by moving execution threads around. We can produce +Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing +popular languages do not support them. + +When we are successful, we will have an immediate, large impact as +those 175,000 Python users will all get an improved language. + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Potential Impact on the Balance of Trade +======================================== + +Right now Python is the sixth most popular programming language in the +world. Java and Visual Basic, ranked 1 and 2, are closed source +proprietary American products. The number one reason that is cited by +Java users as to 'why they don't use Python' is that it is too slow. +PyPy will fix this. Right now the Visual Basic users have a terrible +dilemma. Microsoft, in its wisdom, has decided end support of their +current platform, Visual Basic 6.0. After the year 2005, they will +have to move to Microsoft's .NET. This is a tremendous opportunity +for us. They're angry as anything now, and tempted to move, not to +.NET, but to an Open Source language, just so that they can have +control over their own destiny and indicate their displeasure with +Microsoft at the same time. + +Every Java and VB user that switches to Python does not pay license +fees to Sun or Microsoft and helps the European balance of Trade. + +Of course, all the PBF members are predicting that an improved +Python will improve their sales, both domestic and foreign. + + +DISEMMINATION +ore B6.7.wp14_documentation.txt.. include:: crossreferences.asc + +.. |title| replace:: Project Documentation and Dissemination +.. |wp| replace:: WP14 +.. |start| replace:: 0 +.. |p1| replace:: AM +.. |m1| replace:: 19 +.. |p2| replace:: JH +.. |m2| replace:: 3 +.. |p3| replace:: MWH +.. |m3| replace:: 3 +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +Providing ongoing documentation throughout the whole project. + +Keeping external groups informed of the ongoings in PyPy. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +- During the whole project, maintain and extend a set of documents + represends the current status of the project, results of + discussions, the planning of new sprints and their status reports, + as well as the preparation of papers for presentation on + various congresses. + +- Send reports of ongoings in the project to the Python Business + Forum (PBF) and the Python + developers list (python-dev at python.org). + +XXX here is the new text from Anna and Alex: + +WP 14 + +Each "sprint", as well as the regular progress of non-sprint development, will +produce technical novelties, some of which may afford immediate use and adoption +of the novel technologies being developed. WP 14 will periodically produce short +reports on the result of "sprints" and other development. Said reports will be +posted to the relevant mailing lists as well as archived on both the PyPy and +the Python Business Forum website for universal availability. + +Python community members will be encouraged to keep current with the project +through the short reports, while community feedback on technical developments +will be gathered on the website and mailing lists to be used by the appropriate project areas to further enhance the project's development efforts, in true Open +Source spirit. + +In addition to the periodically produced short reports, WP 14 will on occasion +present longer, detailed reports to the Commission, and to scientific committees +advising the Commission on technical issues. Technical papers and talks will be submitted to scientific conferences which deal with the subject matters covered by the project. When the advancement of the project warrants it, WP 14 will also +publish "popularization" articles and tutorial materials to help other +practitioners of software development to make practical use of the project's +results. Diagrams and schematics will be provided to illustrate fundamental +concepts, as appropriate to the audience and the subject matter. + +The person in charge of WP 14 will be Alex Martelli, a member of both the core +Python developers and of the Python Business Forum, author of the best-selling +book "Python in a Nutshell", co-editor of the collectively authored "Python +Cookbook", popular for his articles on both printed and online venues, and +technical editor and/or reviewer of most of the Python books published over the +last couple of years. Dr. Martelli has a background of leading multi-cultural +software development teams and providing presentations and reports in various +formats to audiences at all levels of technical expertise. His team will include +members with a diversity of languages and backgrounds, which will prove crucial +in the popularization phase, in particular, which may require authoring, +translation, and presentation in the many different languages of the European +Union. + +XXX TODO: + +- Make a shorter version for here +- move personal stuff into a better place +- extract and use some for the introduction text + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + +- Good documentation and dissemination + +.. include:: wp-tableend.asc \ No newline at end of file From jacob at codespeak.net Sat Oct 11 14:08:16 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sat, 11 Oct 2003 14:08:16 +0200 (MEST) Subject: [pypy-svn] rev 1705 - pypy/trunk/doc/funding Message-ID: <20031011120816.0B6705A40B@thoth.codespeak.net> Author: jacob Date: Sat Oct 11 14:08:16 2003 New Revision: 1705 Added: pypy/trunk/doc/funding/FIXME Log: FIXME file tor get and report work Added: pypy/trunk/doc/funding/FIXME ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 14:08:16 2003 @@ -0,0 +1,174 @@ +States: +NOT STARTED +STARTED +CORRECTED +REVIEWED +DONE + + +B0.0_preamble +Remove garbage +fix fixmes +NOT STARTED + +B0.1_summary +Decide which summary to use. +Remove garbage +NOT STARTED + +B1.0_objectives +Done? Check. +NOT STARTED + +B1._obj_from_badB2 +Usable anywhere? Make decision. +NOT STARTED + +B2.0.0_new_relevance +2 sections to write +Fix fixmes +Modify text? Make decision. +NOT STARTED + +B3.0_impact +Remove garbage +Fix fixmes. Some reasonably tough additions. +Evaluate for relevance. +NOT STARTED + +B3.1_standards +Remove garbage +Fix fixmes +NOT STARTED + +B3.2.3_european_dimension +Needs total rewrite. +NOT STARTED + +B3.2.strategic_impact +Needs polish +NOT STARTED + +B4.0_resources +Should be empty. Stuff goes in subchapters. +NOT STARTED + +B4.1_subcontracting +Needs writing. +NOT STARTED + +B4.2_other_countries +Needs to say that no other countries will be involved. +NOT STARTED + +B4.3_participants +Needs organisation descriptions. Are we lacking any CVs? Find out. +NOT STARTED + +B4.4_quality_SMEs +Needs review. +Fix fixmes +NOT STARTED + +B4.5_resources +Needs writing. +NOT STARTED + +B4.6_finance +Needs writing. +NOT STARTED + +B4.7_effort_form +Needs producing. To be done after everything else. +NOT STARTED + +B5.0_manage_bea +Make diagrams. +Fix fixmes. +Review. +NOT STARTED + +B6.0_detailed_implementation +Should be empty. +NOT STARTED + +B6.1_plan_introduction +Needs checking and editing. +Material consistent with work packages? +NOT STARTED + +B6.2_tech_aspects +Needs writing. +NOT STARTED + +B6.3_risks_minimise +Needs writing. +NOT STARTED + +B6.4_gantt +Needs checking. +NOT STARTED + +B6.5_workpackage_list +Needs person months. Needs new heading for "temp" column. +NOT STARTED + +B6.6_deliverables_list +Needs writing/generating +NOT STARTED + +B6.7.wp01_management +Needs splitting of work effort. +NOT STARTED + +B6.7.wp02_maintenance +OK +DONE + +B6.7.wp03_synchronisation +OK +DONE + +B6.7.wp04_core +Needs work effort. +NOT STARTED + +B6.7.wp05_translation +Needs work effort. +NOT STARTED + +B6.7.wp06_dynamic_optimization +ok for now +DONE + +B6.7.wp07_translator_optimisations +ok for now +DONE + +B6.7.wp08_core_optimisations +ok for now +DONE + +B6.7.wp09_language_extensions +ok for now +DONE + +B6.7.wp10_app_language_ext +Needs work effort. +NOT STARTED + +B6.7.wp11_validations +Needs work effort. +NOT STARTED + +B6.7.wp12_integration_config +ok for now +DONE + +B6.7.wp14_documentation +Needs editing. +NOT STARTED + +B7.0_other_issues +Needs writing. +NOT STARTED From lac at codespeak.net Sat Oct 11 14:22:13 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 14:22:13 +0200 (MEST) Subject: [pypy-svn] rev 1706 - pypy/trunk/doc/funding Message-ID: <20031011122213.A8A355A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 14:22:12 2003 New Revision: 1706 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: tidied some, but want Bea's changes ... Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Sat Oct 11 14:22:12 2003 @@ -1,27 +1,9 @@ FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it - FIXME think about including Logilab and DFKI references -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - Potential impact =================== - The successful execution of the PyPy project will deliver a practical usefull implementation of a Very-High-Level, Object-Oriented, Open Source programming language. @@ -46,34 +28,16 @@ - Sustainable project progress through unittesting -The cost of software development is essentially labor costs, time to market -and costs of software tools. Having a (free) flexible VHLL will ease the development -through the fact that problems are solved closer to the abstraction level -they are formulated. This will greatly improve the productivity of the -individual programmer. - - - -We intend to make a new reference version of the Python Programming -Language, which is faster, more flexible, more extensible, and which -gives more control to the individual programmer as to how it is -deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. -Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a PyPy interpreter which will be -executed on several machines but offer a single distributed computation -space and balances the load by moving execution threads around. We can -produce Object Spaces which implement Logic Programming, Aspect Oriented -Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular -languages do not support them. -gramming language. - -It is always difficult to measure how many -people are using a programming language, but of course, we try. -Python is generally ranked the sixth most popular computer language in -the world. Only Java, Visual Basic, C, C++, and Perl are believed to -have more users. +The cost of software development is essentially labor costs, time to +market and costs of software tools. Having a (free) flexible VHLL will +ease the development through the fact that problems are solved closer +to the abstraction level they are formulated. This will greatly +improve the productivity of the individual programmer. + +It is always difficult to measure how many people are using a +programming language, but of course, we try. Python is generally +ranked the sixth most popular computer language in the world. Only +Java, Visual Basic, C, C++, and Perl are believed to have more users. The Python FAQ, available at the python language home site of python.org says:: @@ -99,11 +63,11 @@ as Haskell, OCaml, Smalltalk, ADA, Ruby etc. Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are -the 'bleeding edge' developers, who were interested in the new -release of Python first made available at the end of August. There -are, of course, many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version +Python 2.3 downloads in the first 10 days of September. These are the +'bleeding edge' developers, who were interested in the new release of +Python first made available at the end of August. At the other end of +the spectrum, there are many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. FWIW, there are about 600,000 http visitors a month to python.org. @@ -131,9 +95,10 @@ the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. -For comparison, there are something like 12 million programmers world-wide -and roughly 50% of those use Visual Basic (according to International Data -Corp). In March 2002, Borland said Java had about 1.5 million developers. +For comparison, there are something like 12 million programmers +world-wide and roughly 50% of those use Visual Basic (according to +International Data Corp). In March 2002, Borland said Java had about +1.5 million developers. We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which @@ -141,22 +106,17 @@ deployed. For instance, you will be able to build a Python interpreter customised for a very small amount of available memory. Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a self-customising PyPy which . We can produce Object Spaces which -implement Aspect Oriented Programming and Design By Contract, hot new -topics in computer science research, but which are rarely seen in -industry because existing popular languages do not support them. - -NICOLAS HELP ME WRITE STUFF HERE - -When we are successful, we will have an immediate, large impact as -those 175,000 Python users will all get an improved language. - - +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. -implementation of the language with substantial improvements will have -an immediate direct effect on Eropean competitiveness. Moreover, the -planned improvements directly target the handheld, mobile, and +An implementation of the language with substantial improvements will +have an immediate direct effect on Eropean competitiveness. Moreover, +the planned improvements directly target the handheld, mobile, and embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high level language with a very small footprint. The new innovative @@ -169,13 +129,11 @@ huge amount of memory to achieve the highest performance speed. Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. +those European Companies who develop using Python. Moreover, some +companies resist using Python because of its speed. If execution +speed, rather than development speed is of paramont importance to +you, then Python is currently not a very good language choice. A +faster Python would have more appeal. Furthermore, one of the greatest threats to European competitiveness is its dependence upon proprietary closed source software, mostly made @@ -203,7 +161,13 @@ regardless of the effects on European software developers. The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. +more insidious, and more long term. This is an educational defecit. +This is expanded on in section B7. Suffice it to say that a generation +has grown up who have not been able to see how their tools actually +work. When your tools become a Black Box, you end up becoming +dependent on your tools, rather than empowered by them. + +A good workman knows his tools. This is much more than the theoretical knowledge of how his tools ought to work, according to principles learned in school. The way car mechanics know how cars work is distinctly different from what you From nico at codespeak.net Sat Oct 11 14:31:23 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Sat, 11 Oct 2003 14:31:23 +0200 (MEST) Subject: [pypy-svn] rev 1707 - pypy/trunk/doc/funding Message-ID: <20031011123123.893675A40B@thoth.codespeak.net> Author: nico Date: Sat Oct 11 14:31:22 2003 New Revision: 1707 Added: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (contents, props changed) - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt (contents, props changed) - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (contents, props changed) - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp12_validations.txt (contents, props changed) - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp11_validations.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (contents, props changed) - copied, changed from rev 1704, pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Removed: pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt pypy/trunk/doc/funding/B6.7.wp11_validations.txt pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/project_gantt.png Log: renamed WP and checked references. Modified: pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- pypy/trunk/doc/funding/B6.1_plan_introduction.txt (original) +++ pypy/trunk/doc/funding/B6.1_plan_introduction.txt Sat Oct 11 14:31:22 2003 @@ -187,7 +187,7 @@ between different machines. -WP08_: Core Optimisations +WP06_: Core Optimisations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Since the standard object space allows coexistence of different implementations of the same type, we can develop Copied: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Sat Oct 11 14:31:22 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Core Optimisations -.. |wp| replace:: WP08 +.. |wp| replace:: WP06 .. |start| replace:: M2 .. |p1| replace:: X .. |m1| replace:: 4 Deleted: /pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,67 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Dynamic optimizations and features -.. |wp| replace:: WP06 -.. |start| replace:: M2 -.. |p1| replace:: AR -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Y -.. |m3| replace:: 2 -.. |p4| replace:: Z -.. |m4| replace:: 2 -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Enhance PyPy to dynamically adapt to its run-time environment and -to the characteristics of the running program. Dramatically -increase speed by enabling Just-In-Time compilation and -specialization. Address multiple processor architectures. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Apply and enhance techniques from the Psyco project. Promote parts -of the static translator to be used for run-time specialization. - -**Task 2** - -Design and implement a back-end component for dynamically emitting -machine code for multiple processor architectures. Enable dynamic -foreign function calls. - -**Task 3** - -Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP08_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. -- DL??? A Just-In-Time compiler for PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M3 High performance PyPy, together with WP07_. Outperform the - state-of-the art (Psyco, Stackless). - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Sat Oct 11 14:31:22 2003 @@ -65,7 +65,7 @@ **Milestones and Expected Result** -- M3 High performance PyPy, together with WP07_. Outperform the +- M3 High performance PyPy, together with WP08_. Outperform the state-of-the art (Psyco, Stackless). .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp08_core_optimisations.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,68 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Core Optimisations -.. |wp| replace:: WP08 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Building upon the efficiency and flexibility of the code base -developed in WP04_, investigate and compare alternative designs and -implementations. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Provide alternative implementations of the core objects, -such as dictionaries, strings and integers, with different -trade-offs (speed, size, limitations). - -**Task 2** - -Run performance tests on the above, comparing the different -implementation decisions for a range of platforms and -applications. -Categorize into overall improvement, platform, and application dependency. -Produce and publish reports on the results. - -**Task 3** - -Merge the results back into the optimization effort. -Where necessary, define heuristics to select implementations -and to switch between them, depending on evolving runtime conditions. -Report on the results and submit as publications. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Publication of statistics. -- DL??? Publication of novel heuristic techniques. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt Sat Oct 11 14:31:22 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc .. |title| replace:: Dynamic optimizations and features -.. |wp| replace:: WP06 +.. |wp| replace:: WP08 .. |start| replace:: M2 .. |p1| replace:: AR .. |m1| replace:: 6 @@ -46,7 +46,7 @@ **Task 3** Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP08_. +Coordinate with WP06_. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,101 +0,0 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN - -FIXME -partecipants: Logilab, PBF, (DFKI?) -time estimates: ? - -:DELETE:END - -.. |title| replace:: Language Research and Extensions -.. |wp| replace:: WP09 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Leveraging PyPy flexibility implement language-integrated constraint -satisfaction algorithms and inference engine to allow logic -programming for Semantic Web applications. Also implement aspect -oriented programming language features. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Using the flexible architecture provided by the PyPy interpreter, we -will first reimplement the current python-logic libraries available -from Logilab to better integrate with the language and gain important -execution speed-ups. - -:DELETE:BEGIN - -FIXME should we mention (where?) that this is going to be used -by WP10_? - -This logic programming enabled python interpreter will then be -used to further develop the projects related to Semantic Web -applications that are on-going at Logilab and DFKI. - -:DELETE:END - -**Task 2** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -:DELETE:BEGIN - -FIXME where should this go? -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. It will also -allow us to implement advanced static checking and code -correctness capabilities, thus furthering the work done with -the pychecker and pylint tools. - -:DELETE:END - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Implementation of constraint satisfaction engine and - inference engine in PyPy - -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -XXX write me - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_language_extensions.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sat Oct 11 14:31:22 2003 @@ -8,7 +8,7 @@ :DELETE:END -.. |title| replace:: Language Research and Extensions +.. |title| replace:: Extend Language with Search and Logic .. |wp| replace:: WP09 .. |start| replace:: 0 .. |p1| replace:: X @@ -32,8 +32,7 @@ Leveraging PyPy flexibility implement language-integrated constraint satisfaction algorithms and inference engine to allow logic -programming for Semantic Web applications. Also implement aspect -oriented programming language features. +programming for Semantic Web applications developed at Logilab and DFKI. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc @@ -47,36 +46,12 @@ from Logilab to better integrate with the language and gain important execution speed-ups. -:DELETE:BEGIN - -FIXME should we mention (where?) that this is going to be used -by WP10_? +**Task 2** This logic programming enabled python interpreter will then be used to further develop the projects related to Semantic Web applications that are on-going at Logilab and DFKI. -:DELETE:END - -**Task 2** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -:DELETE:BEGIN - -FIXME where should this go? -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. It will also -allow us to implement advanced static checking and code -correctness capabilities, thus furthering the work done with -the pychecker and pylint tools. - -:DELETE:END - .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc @@ -85,17 +60,15 @@ - DL??? Implementation of constraint satisfaction engine and inference engine in PyPy -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. +- DL??? Assessment of benefits obtained from using PyPy over + current tools to further develop Semantic Web projects + at Logilab and DFKI. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -XXX write me +FIXME write me .. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,62 +0,0 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN - -FIXME -participants: Logilab and DFKI -time estimates: ? -roughly 1,5 person each --> 3 person total for 1 year (?) - -FIXME Semantic Web in the title ? - -:DELETE:END - -.. |title| replace:: Application of language extensions -.. |wp| replace:: WP10 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 0 -.. |p2| replace:: Y -.. |m2| replace:: 0 -.. |p3| replace:: Z -.. |m3| replace:: 0 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -The logic programming enabled Python interpreter produced in WP09_ -will then be used to further develop the projects related to Semantic -Web applications that are on-going at Logilab and DFKI. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -FIXME_DFKI should fill this in... - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Assessment of benefits obtained from using PyPy over - current tools to further develop Semantic Web projects - at Logilab and DFKI. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_app_language_ext.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sat Oct 11 14:31:22 2003 @@ -11,7 +11,7 @@ :DELETE:END -.. |title| replace:: Application of language extensions +.. |title| replace:: Extend Language with Aspects and Contracts .. |wp| replace:: WP10 .. |start| replace:: M2 .. |p1| replace:: X @@ -33,25 +33,41 @@ **Objectives** -The logic programming enabled Python interpreter produced in WP09_ -will then be used to further develop the projects related to Semantic -Web applications that are on-going at Logilab and DFKI. +Leveraging PyPy flexibility implement aspect-oriented programming, +design-by-contract and advanced static checking capabilities. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -FIXME_DFKI should fill this in... + +**Task 1** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current aspect-oriented libraries +available from Logilab, to better integrate with the language +and greatly simplify the design and enhance the performance. + +**Task 2** + +This aspect enabled interpreter will be used to offer +design-by-contract facilities as seen in the Eiffel programming +language and the current aspect-oriented library. +This will also allow us to implement advanced static +checking and code correctness checking capabilities, thus furthering +the work done with the pychecker and pylint tools. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- DL??? Assessment of benefits obtained from using PyPy over - current tools to further develop Semantic Web projects - at Logilab and DFKI. +- DL??? Implementation of aspect-oriented programming + capabilities in PyPy + +- DL??? Implementation of design-by-contract and advanced + static checking capabilities. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Added: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sat Oct 11 14:31:22 2003 @@ -0,0 +1,69 @@ +.. include:: crossreferences.asc + +:DELETE:BEGIN + +FIXME +participants: Logilab and DFKI +time estimates: ? +roughly 1,5 person each --> 3 person total for 1 year (?) + +FIXME Semantic Web in the title ? + +:DELETE:END + +.. |title| replace:: Embed in Specialized Hardware +.. |wp| replace:: WP11 +.. |start| replace:: M2 +.. |p1| replace:: X +.. |m1| replace:: 0 +.. |p2| replace:: Y +.. |m2| replace:: 0 +.. |p3| replace:: Z +.. |m3| replace:: 0 +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +The capacity of this interpreter to be assembled from basic modules +will enable us to build a minimal custom version that suits embedded +systems. This embedded version will be validated on existing hardware. + +FIXME talk about ChangeMaker and Axis here ? Logilab is willing to participate. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +**Task 1** + +Coordinate with WP13_ to build a minimal interpreter suitable for +embedding on devices with restricted resources. + +**Task 2** + +Validate interpreter on existing hardware. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Minimal interperter suitable for embedded devices. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + + +.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp11_validations.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp11_validations.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,72 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Validation of PyPy -.. |wp| replace:: WP11 -.. |start| replace:: M4/M3 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Research and validate the flexibility of PyPy by building key middleware -features into the language itself. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Analyze and implement security models at the language level. Implement -the "RExec" restricted execution model. (It was removed from the official -Python implementation because it was too hard to maintain.) - -**Task 2** - -Analyze and implement distributed execution models at the language level. -Implement network-transparent execution of Python programs. (Typical -libraries require programs to be aware of the remote execution model.) - -**Task 3** - -Analyze and implement persistence at the language level. Implement an -orthogonally persistent object space for Python programs. (Persistence -is never fully orthogonal without advanced language support.) - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- D?? A PyPy version which supports secure restricted execution of - arbitrary Python programs - -- D?? A PyPy version which supports distributed execution of - arbitrary Python programs - -- D?? A PyPy version which supports persistent execution of - arbitrary Python programs - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M4 Validation of the flexibility of PyPy with respect to key middleware requirements - -.. include:: wp-tableend.asc Deleted: /pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt Sat Oct 11 14:31:22 2003 +++ (empty file) @@ -1,67 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Integration and Configuration -.. |wp| replace:: WP12 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Integrate research and the source code from wp06_, wp07_, wp08_ and wp09_ into -a consistent code base. Analyse and fix remaining problems. Develop tools that will -allow to chose from available features and runtime restrictions to build -a custom PyPy version. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Analyse and integrate all results from the results of other workpackages. -This involves identifying and resolving conflicts which could prevent -a combintation of desired optimization goals. - -**Task 2** - -Implement user interfaces to select features and runtime restrictions. -Provide a way to automatically build a PyPy custom version for different -memory, performance and extension requirements. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL01: A release of PyPy with all available optimization and runtime features. - . -- DL02: a build- and configuration tool that allows to build custom PyPy versions - suitable for specialized environments like small or very large computing - devices. - - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -A stable release of PyPy enabling a wide range of users to experiment and develop -using it as a flexible and highly-optimizable Python implementation. - -.. include:: wp-tableend.asc Copied: pypy/trunk/doc/funding/B6.7.wp12_validations.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp11_validations.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_validations.txt Sat Oct 11 14:31:22 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -.. |title| replace:: Validation of PyPy -.. |wp| replace:: WP11 +.. |title| replace:: Implementation of Security, Distribution and Persistence +.. |wp| replace:: WP12 .. |start| replace:: M4/M3 .. |p1| replace:: |e| .. |m1| replace:: |e| Copied: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (from rev 1704, pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt) ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Sat Oct 11 14:31:22 2003 @@ -22,7 +22,7 @@ **Objectives** -Integrate research and the source code from wp06_, wp07_, wp08_ and wp09_ into +Integrate research and the source code from wp06_, wp07_, wp08_, wp09_ and wp10_ into a consistent code base. Analyse and fix remaining problems. Develop tools that will allow to chose from available features and runtime restrictions to build a custom PyPy version. Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From nico at codespeak.net Sat Oct 11 14:39:30 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Sat, 11 Oct 2003 14:39:30 +0200 (MEST) Subject: [pypy-svn] rev 1708 - pypy/trunk/doc/funding Message-ID: <20031011123930.8E6825A40B@thoth.codespeak.net> Author: nico Date: Sat Oct 11 14:39:29 2003 New Revision: 1708 Modified: pypy/trunk/doc/funding/FIXME Log: renamed B6.7* files. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 14:39:29 2003 @@ -137,7 +137,7 @@ Needs work effort. NOT STARTED -B6.7.wp06_dynamic_optimization +B6.7.wp06_core_optimisations ok for now DONE @@ -145,23 +145,27 @@ ok for now DONE -B6.7.wp08_core_optimisations +B6.7.wp08_dynamic_optimization ok for now DONE -B6.7.wp09_language_extensions +B6.7.wp09_search_and_logic ok for now DONE -B6.7.wp10_app_language_ext +B6.7.wp10_aspects_and_contracts Needs work effort. NOT STARTED -B6.7.wp11_validations +B6.7.wp11_embed_in_hardware Needs work effort. NOT STARTED -B6.7.wp12_integration_config +B6.7.wp12_validations +Needs work effort. +NOT STARTED + +B6.7.wp13_integration_config ok for now DONE @@ -172,3 +176,7 @@ B7.0_other_issues Needs writing. NOT STARTED + +project_planning.xml +Needs general agreement before we copy info to B6.7* files. +NOT STARTED. \ No newline at end of file From pedronis at codespeak.net Sat Oct 11 14:42:35 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 14:42:35 +0200 (MEST) Subject: [pypy-svn] rev 1709 - pypy/trunk/doc/funding Message-ID: <20031011124235.2E75A5A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 14:42:34 2003 New Revision: 1709 Modified: pypy/trunk/doc/funding/crossreferences.asc Log: fixed crossreferences.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Sat Oct 11 14:42:34 2003 @@ -3,14 +3,14 @@ .. _WP03: B6.7.wp03_synchronisation.html .. _WP04: B6.7.wp04_core.html .. _WP05: B6.7.wp05_translation.html -.. _WP06: B6.7.wp06_dynamic_optimization.html +.. _WP06: B6.7.wp06_core_optimisations.html .. _WP07: B6.7.wp07_translator_optimisations.html -.. _WP08: B6.7.wp08_core_optimisations.html -.. _WP09: B6.7.wp09_language_extensions.html -.. _WP10: B6.7.wp10_app_language_ext.html -.. _WP11: B6.7.wp11_validations.html -.. _WP12: B6.7.wp12_integration_config.html -.. _WP13: B6.7.wp13_existing_apps.html +.. _WP08: B6.7.wp08_dynamic_optimization.html +.. _WP09: B6.7.wp09_search_and_logic.html +.. _WP10: B6.7.wp10_aspects_and_contracts.html +.. _WP11: B6.7.wp11_embed_in_hardware.html +.. _WP12: B6.7.wp12_validations.html +.. _WP13: B6.7.wp13_integration_config.html .. _WP14: B6.7.wp14_documentation.html .. |e| unicode:: 0x20 .. doesn't work with plain spaces \ No newline at end of file From pedronis at codespeak.net Sat Oct 11 14:47:50 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 14:47:50 +0200 (MEST) Subject: [pypy-svn] rev 1710 - pypy/trunk/doc/funding Message-ID: <20031011124750.D90B55A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 14:47:50 2003 New Revision: 1710 Modified: pypy/trunk/doc/funding/FIXME (props changed) Log: native eol-style for FIXME. From lac at codespeak.net Sat Oct 11 14:49:24 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 14:49:24 +0200 (MEST) Subject: [pypy-svn] rev 1711 - pypy/trunk/doc/funding Message-ID: <20031011124924.B552B5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 14:49:23 2003 New Revision: 1711 Modified: pypy/trunk/doc/funding/B3.0_impact.txt Log: shorten this, only referring to the edu reference, which is in B7, or will be when Jacob is done with it. Fixing the Stockholms Modified: pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.0_impact.txt (original) +++ pypy/trunk/doc/funding/B3.0_impact.txt Sat Oct 11 14:49:23 2003 @@ -160,138 +160,3 @@ these decisions because they make business sense for Microsoft, regardless of the effects on European software developers. -The second threat closed source makes to European competitiveness is -more insidious, and more long term. This is an educational defecit. -This is expanded on in section B7. Suffice it to say that a generation -has grown up who have not been able to see how their tools actually -work. When your tools become a Black Box, you end up becoming -dependent on your tools, rather than empowered by them. - -A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -It is not as if there is a shortage of people who would be interested -in learning such things, if the source were made available. Many -people have taken this step by learning how CPython does its stuff. -But still there is a barrier. If you want to know how CPython does -things, you need to learn C. C is a notoriously difficult language to -learn. - -But let me quote from an article posted to the Python-in-Education -mailing list. - -FIXME_LAURA -- I promised Arthur I would fix any typos:: - - Date: Sun, 14 Sep 2003 11:52:05 -0400 - From: Arthur - To: edu-sig at python.org - Subject: [Edu-sig] re : If the PyPy Project ... - - List-Id: Python in education - - Terry - - - >Since I presume the goal of PyPy is to implement *Python* in Python, - >wouldn't the implementation language be rather insignificant to an - >end-user such as an educator? Why would it be "better" than CPython? - - For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some - time in the complex realm with PyGeo - a simple version of the complex - realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. - - Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue - are to be dealt with. Not that I got there, yet - but I did seem to have an - avenue to explore I would not have with CPython - as someone who doesn't C, - and has no intention of trying, seriously, to do so. - - As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It - will make Python, I believe, a more attractive educational language, because - it will make someone with a strong foundation in Python - as the language of - choice - a more self-sufficient programmer. - - Presumably - the point is - there will be less cases where the right - approach would be an extension module in C or C++, and a sense of - fundamental compromise should one not be equipped to go there. Many - thousands of folks - using VB and the like - already do involved, - highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put - Python more squarely in that "space". - - Is any of this so, or just hope? - - Art - - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - -Here is somebody who is hoping we can give him a language he can -understand. Python already is an excellent teaching language. PyPy -will be a better one. - -This project has to be done at the European or the International -level. That's where we all live. - -Since education is a primary goal of the project, we will take every -opportunity to disseminate PyPy. The source will always be freely -available from our website. We will continue to give talks about PyPy -at EuroPython, Python-UK, OSCON (the International Open Source -Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS - - How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications), ECOOP (European Conference -on Object-Oriented Programming), the MIT Lightweight Languages -Workshops and the like as the next target? - -ASK STOCKHOLM -- will the EU pay for us to go to conferences? even -ones we were going to attend anyway? - -These talks will create interest as well as teach techniques. We will -submit a PEP and push to get PyPy made the reference implementation of -the Python programming language(*). We will continue to discuss PyPy on -our own mailing lists, as well as other Python mailing lists such as -the Python-in-Education list, and the Usenet Newsgroup -comp.lang.python. We already have an IRC channel, #pypy on -irc.freenode.net where live online discussions happen, and where we -communicate with each other while we are apart. Beyond that -- we are -willing to take any actions the EU would like to fund. - -:: - - FIXME - (*) emphasis on this one? If this really happens we'll arguably - become the software European Project with the largest distribution - and user base ever (XXX rephrase :-) - Also mention that the issue (and the word 'PEP') is discussed - later in B3.1_standards.txt? - -Ask Stockholm We think you get no money for this in a STREP. True? - -ASK STOCKHOLM -- -can we get some money to give Freenode? -re: 'Indicate what account is taken of other national or international -research activities.' -- Samuele and Armin read the literature all -the time. What do I say? - From lac at codespeak.net Sat Oct 11 14:52:56 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 14:52:56 +0200 (MEST) Subject: [pypy-svn] rev 1712 - pypy/trunk/doc/funding Message-ID: <20031011125256.AAFB35A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 14:52:55 2003 New Revision: 1712 Added: pypy/trunk/doc/funding/B3.allmerged.txt Log: Squish all the B3s together, prior to hacking, and nuking the subfiles Added: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 14:52:55 2003 @@ -0,0 +1,1187 @@ +FIXME_LAURA: currently writing this +FIXME_NICO FIXME_ALASTAIR : proof-read it +FIXME think about including Logilab and DFKI references + +Potential impact +=================== +The successful execution of the PyPy project will deliver a practical usefull +implementation of a Very-High-Level, Object-Oriented, Open Source programming +language. + +This will impact software development in several important ways. + + - The cost of software development will diminish. + + - The time to market will be reduced. + + - The cost of software maintenance will be reduced. + + - Reduce barriers to market a product. + + +The development methods of the PyPy project will prove that using Sprints, +pair programming and test driven development, results in : + + - Broader understanding of the code base among developers + + - Rapid developments from ideas to working code + + - Sustainable project progress through unittesting + +The cost of software development is essentially labor costs, time to +market and costs of software tools. Having a (free) flexible VHLL will +ease the development through the fact that problems are solved closer +to the abstraction level they are formulated. This will greatly +improve the productivity of the individual programmer. + +It is always difficult to measure how many people are using a +programming language, but of course, we try. Python is generally +ranked the sixth most popular computer language in the world. Only +Java, Visual Basic, C, C++, and Perl are believed to have more users. + +The Python FAQ, available at the python language home site of +python.org says:: + + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. ('Python' gives +ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are the +'bleeding edge' developers, who were interested in the new release of +Python first made available at the end of August. At the other end of +the spectrum, there are many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. +About one third of them are using the documentation, which is a +fairly good indicator that they are trying to use the language. +Number of unique IP addresses per month is about 350,000 at this point, +and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +1) One user may use multiple machines (e.g. home & work & cafe) +2) Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +3) Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already dowloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are to be considered +relevant. Speaking of books, sales statistics of *The Essential +Jython* targetted at users of the Python version that compiles to +the Java Virtual Machine indicate that there are at least 10 thousand +Jython users worldwide. + +For comparison, there are something like 12 million programmers +world-wide and roughly 50% of those use Visual Basic (according to +International Data Corp). In March 2002, Borland said Java had about +1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. + +An implementation of the language with substantial improvements will +have an immediate direct effect on Eropean competitiveness. Moreover, +the planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. Moreover, some +companies resist using Python because of its speed. If execution +speed, rather than development speed is of paramont importance to +you, then Python is currently not a very good language choice. A +faster Python would have more appeal. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +FIXME_LAURA: shrink it + +:DELETE:BEGIN + +3.1 Contributions to Standards + +Describe contributions to national or international standards which +may be made by the project, if any. + +(Recommended length ? one page) + +:DELETE:END + +Contributions to Standards +============================== + +There are currently two implementations of Python in common use. The +first one, which we will call CPython, but which is what the world +knows as Python, is a C implementation of the Python Programming +language which compiles to its own virtual machine. The second one is +Jython, a pure-Python implementation which compiles to the Java +virtual machine. There is no ANSI standard or similar for Python. +Right now the de-facto standard for the programming language is +'whatever CPython does'. This is far from ideal, and questions arise, +especially from the developers of Jython as to which CPython language +behaviours are essential to the Python language itself, and which are +mere accidents of this particular implementation. + +For example, the garbage-collection behavior of CPython is implemented +by reference-counting ensuring that an object is finalized as soon as +the last reference to it goes away. That would be extremely +inconvenient (close to impossible) to implement on standard Java +Virtual Machines, which have a deliberately under-specified garbage +collector (it can collect anything it pleases whenever it pleases...). +In this case, the Jython designers had to obtain an explicit ruling +from Guido van Rossum, Python's designer -- who ruled that the +behavior of CPython was 'accidental' in this case, and not intrinsic +to the Python language specification. + +Guido van Rossum has expressed interest in giving PyPy the status of +'implementation standard' (executable specification) of the Python +programming language. PyPy's ObjectSpaces flexibility will be crucial +in distinguishing "accidental" from "designed-in" characteristics. + +(FIXME: I sent Guido mail asking for something quotable. We will see +if he replies.) + +In order to do this we will have to do something which is called +'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design +document providing information to the Python community, or describing +a new feature for Python. There are two kinds of PEPs. A Standards +Track PEP describes a new feature or implementation for Python. An +Informational PEP describes a Python design issue, or provides general +guidelines or information to the Python community, but does not +propose a new feature. If we proposed to make PyPy the reference +standard of the Python language, we would, obviously, have to submit a +Standards Track PEP. + +PEP authors are responsible for collecting community feedback on a PEP +before submitting it for review. A PEP that has not been discussed on +python-list at python.org and/or python-dev at python.org will not be +accepted. After the authors believe that the PEP is ready, they must +inform the PEP editors (currently Barry Warsaw and David Goodger) that +it is ready for review. + +PEPs are reviewed by Guido van Rossum, the language author, and his +chosen consultants, who may accept or reject a PEP or send it back to +the author(s) for revision. + +If Guido van Rossum accepts the PEP, then its status is changed to +'Accepted'. If the reference implementation is not already complete, +it must then be completed. When the reference implementation is +complete and accepted (again by Guido van Rossum), the status will be +changed to 'Final'. In our case, we wouldn't even write the PEP +without having a complete reference implementation, since what we +would be proposing is to make PyPy and not CPython the complete +reference implementation of the language. Thus the expression of +interest from Guido van Rossum is of extreme significance. It is +likely, though not certain, that PyPy will become the standard +reference implementation of the Python language. + +:: + + FIXME + either say 'very likely if all the goals described in the project + are met' or give some more precise conditions, e.g. existence of a + PyPy version largely compatible with existing C extension modules + +The complete details of how to write a PEP are themselves an +Informational PEP -- PEP #1 in fact. Complete details are to be found +in this appendix: + +FIXME include http://www.python.org/peps/pep-0001.html +FIXME_LAURA : finish writing + +FIXME_NICO FIXME_ALASTAIR proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +B.3.2 Strategic impact +====================== + +:DELETE:END + +Strategic impact +====================== + +PyPy will have a significant strategic impact throughout the IT +sector. It produces immensely useful, practical results which shall +be immediately exploited by Python developers world-wide. While it +addresses issues which have hitherto mostly remained the special +province of academia, and significantly enhances the State-of-the-Art, +it is not a project that will only satisfy intellectual curiosity. + +Python and extremely popular Very-High-Level, Object-Oriented, +programming language. It is always difficult to measure how many +people are using a programming language, but of course, we try. +Python is generally ranked the sixth most popular computer language in +the world. Only Java, Visual Basic, C, C++, and Perl are believed to +have more users. + +The Python FAQ, available at the python language home site of +python.org says:: + + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. +('Python' gives ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are +the 'bleeding edge' developers, who were interested in the new +release of Python first made available at the end of August. There +are, of course, many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +FWIW, there are about 600,000 http visitors a month to python.org. +About one third of them are using the documentation, which is a +fairly good indicator that they are trying to use the language. +Number of unique IP addresses per month is about 350,000 at this point, +and has been rising steadily from about 250,000 this time last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +- One user may use multiple machines (e.g. home & work & cafe) +- Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +- Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already dowloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are any indication. +Speaking of books, sales statistics of *The Essential Jython*, +targetted at users of the Python version that compiles to the Java +Virtual Machine indicate that there are at least 10 thousand Jython +users worldwide. + +For comparison, there are something like 12 million programmers world-wide +and roughly 50% of those use Visual Basic (according to International Data +Corp). In March 2002, Borland said Java had about 1.5 million developers. + +We intend to make a new reference version of the Python Programming +Language, which is faster, more flexible, more extensible, and which +gives more control to the individual programmer as to how it is +deployed. For instance, you will be able to build a Python +interpreter customised for a very small amount of available memory. +Or one with speed enhancements only possible because there is a huge +amount of memory available. Or a PyPy interpreter which will be +executed on several machines but offer a single distributed computation +space and balances the load by moving execution threads around. We can +produce Object Spaces which implement Logic Programming, Aspect Oriented +Programming and Design By Contract, hot new topics in computer science +research, but which are rarely seen in industry because existing popular +languages do not support them. + +When we are successful, we will have an immediate, large impact as +those 175,000 Python users will all get an improved language.FIXME_LAURA: finish writing +FIXME_NICO FIXME_ALASTAIR: proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Research and Industrial Sectors +======================================================= + +FIXME_ARMIN FIXME_SAMUELE give me 2 sentences or so about why this is +significant research, the sort that is real csc, and will make +a research impact. Add a bit about and we can teach it to +students because its Python, and easy to read, but not more than +2 sentences because I will blather about that in the edu section. + +The 'impact on the industrial sector' was given in more detail +in section B2. This is a summary, indicating precise goals targetted +in our workpackages. For the overview of the European markets, refer +to section B2. + +The particular improvements we intend to make to Python will have an +immediate direct effect on European competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. + +If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. + +But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +For this reason, European companies and governments are moving to +Open Source software, whenever possible. +If you ... insert here ... + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +This is particularily frustrating, because Europe is the acknowledged +world leader in language design. CWI, the home of Python, is also the +home of Algol. As the SWOT analysis of FIXME what is it called -- +makes clear, something terribly wrong happens in the process of +European language deployment. First some European academic institute +invents a really terrific language. And then it stops there. Out in +industry, we are still using Visual Basic, or Java, or C++. The SWOT +analysis indicates that the Americans are successful where we are not +because they develop commercial languages, for sale. They may not be +as well-designed or as well-written as European academic languages, +but they are extremely well-funded. Successful paths for language +adoption apparantly take big bucks. + +Python is an academic computer language which has refuted this claim. +In the 14 years since it was first announced, it has grown to be +the sixth most popular programming language, with (probably) between +one and two hundred thousand users world-wide. This has happened +gradually, spreading +through word-of-mouth, as an Open Source project, with a website, +mailing lists, but no big budget or deep pockets. This makes it +a candidate for the largest European Software project with the +largest distribution and user base. If we produce the new reference +language over the next two years, then PyPy will _be_ Python. Their +user base will be our user base. And then we can specifically target +Java, C++ and Visual Basic users, and get them to switch as well. + +It seems melodramatic to speak of 'World Dominance', but in our +meetings and discussions it keeps coming up again, and again. Why +not? We will 'push the envelope' and produce a language which will be +the next standard by which all other languages are compared in +academia, and make sure that it is syntactically 100% compatible with +CPython, which will ensure for easy adoption. If PyPy can deliver a +language which is better suited for networked, embedded, and mobile +devices, why wouldn't we capture market share from Java, C++, and +Visual Basic? + + +FIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Balance of Trade +======================================== + +Right now Python is the sixth most popular programming language in the +world. Java and Visual Basic, ranked 1 and 2, are closed source +proprietary American products. The number one reason that is cited by +Java users as to 'why they don't use Python' is that it is too slow. +PyPy will fix this. Right now the Visual Basic users have a terrible +dilemma. Microsoft, in its wisdom, has decided end support of their +current platform, Visual Basic 6.0. After the year 2005, they will +have to move to Microsoft's .NET. This is a tremendous opportunity +for us. They're angry as anything now, and tempted to move, not to +.NET, but to an Open Source language, just so that they can have +control over their own destiny and indicate their displeasure with +Microsoft at the same time. + +Every Java and VB user that switches to Python does not pay license +fees to Sun or Microsoft and helps the European balance of Trade. + +Of course, all the PBF members are predicting that an improved +Python will improve their sales, both domestic and foreign. + +<<<<<<< .mine +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. +DISEMMINATION!!!! +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +ppppppppppppppp======= +>>>>>>> .r1670 +FIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. +DISEMMINATION!!!! +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +pppppppppppppppFIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Industrial and Research Sectors +======================================================= + +The particular improvements we intend to make to Python will have an +immediate direct effect on Eropean competitiveness. What is more, the +planned improvements directly target the handheld, mobile, and +embedded device sectors, where Europe is the acknowledged world +leader. People working in such industries have long desired a high +level language with a very small footprint. The new innovative +concept of Object Spaces, pioneered by PyPy makes the construction of +tiny Object Spaces, suitable for running on the smallest devices +straight-forward. Indeed, it will be possible for application +programmers to configure Python runtime environments to suit their +particular hardware characteristics -- for instance, a version that +runs in a minimal amount of memory, or a version that can exploit a +huge amount of memory to achieve the highest performance speed. + +The makers of mobile and networked devices, as well as computer game +designers in the Massively-Multi-Player games industry have long +desired a language that could automatically balance loads, or that +allowed massive parallelism through microthreads. They too will get +what they desire. + +Moreover, a great many companies, in deciding what language to develop +in, reject Very High Level Languages, despite their known advantages +for programmer productivity, code-reuse and maintainability because +the code produced simply does not run fast enough. If we give them a +*fast* VHLL, they will switch. + +Furthermore, one of the greatest threats to European competitiveness +is its dependence upon proprietary closed source software, mostly made +in the United States. This is not only the matter of money being +spent in the United States is money that is not being spent here, +although that affects matters as well. There are two more serious +risks. The first is a threat in the present. + +Any company which writes its software in a proprietary, closed source +language is dependent upon its software provider. If you have a bug, +you must wait for them to fix it. If this bug is not a high priority +for them, you can wait a long time. If you have access to the source +you always have the option of fixing it yourself, or hiring somebody +else to do that. But this is not the greatest of your worries. You +are at constant risk of having your software provider discontinue +support for your language. This is a real threat, not a theoretical +one. In 2002, Microsoft announced that it would no longer be +supporting Visual Basic 6.0 after the year 2005. All Visual Basic +Developers have been told to convert their code to run under +Microsoft's new .NET framework. Before that, in 2001 Microsoft +immediately stopped supporting its Visual J++ language, meant to be a +direct competitor with Java, after settling a lawsuit with Sun +Microsystems. No migration path was specified. Microsoft is making +these decisions because they make business sense for Microsoft, +regardless of the effects on European software developers. + +The second threat closed source makes to European competitiveness is +more insidious, and more long term. A good workman knows his tools. +This is much more than the theoretical knowledge of how his tools +ought to work, according to principles learned in school. The way car +mechanics know how cars work is distinctly different from what you +would know if you had attended classes on 'the principles of the +internal combustion engine', let alone what you need to know to just +drive the thing. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. The world needs Formula-One race car mechanics, indeed, +but it has a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let me quote from an article posted to the Python-in-Education +mailing list. + +FIXME -- I promised Arthur I would fix any typos:: + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand. Python already is an excellent teaching language. PyPy +will be a better one. + +This project has to be done at the European or the International +level. That's where we all live. + +Since education is a primary goal of the project, we will take every +opportunity to disseminate PyPy. The source will always be freely +available from our website. We will continue to give talks about PyPy +at EuroPython, Python-UK, OSCON (the International Open Source +Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS + + How about OOPSLA (Conference on Object-Oriented Programming, +Systems, Languages, and Applications), ECOOP (European Conference +on Object-Oriented Programming), the MIT Lightweight Languages +Workshops and the like as the next target? + +ASK STOCKHOLM -- will the EU pay for us to go to conferences? even +ones we were going to attend anyway? + +These talks will create interest as well as teach techniques. We will +submit a PEP and push to get PyPy made the reference implementation of +the Python programming language(*). We will continue to discuss PyPy on +our own mailing lists, as well as other Python mailing lists such as +the Python-in-Education list, and the Usenet Newsgroup +comp.lang.python. We already have an IRC channel, #pypy on +irc.freenode.net where live online discussions happen, and where we +communicate with each other while we are apart. Beyond that -- we are +willing to take any actions the EU would like to fund. + +:: + + FIXME + (*) emphasis on this one? If this really happens we'll arguably + become the software European Project with the largest distribution + and user base ever (XXX rephrase :-) + Also mention that the issue (and the word 'PEP') is discussed + later in B3.1_standards.txt? + +Ask Stockholm We think you get no money for this in a STREP. True? + +ASK STOCKHOLM -- +can we get some money to give Freenode? +re: 'Indicate what account is taken of other national or international +research activities.' -- Samuele and Armin read the literature all +the time. What do I say? +pppppppppppppppFIXME_LAURA: finish writing + +FIXME_NICO FIXME_ALASTAIR : proof-read + +:DELETE:BEGIN + +B.3 Potential impact + +Describe the strategic impact of the proposed project, for example in +reinforcing competitiveness or on solving societal problems. Describe +the innovation-related activities. Describe the exploitation and/or +dissemination plans which are foreseen to ensure use of the project +results. Describe the added-value in carrying out the work at a +European level. Indicate what account is taken of other national or +international research activities. + +(Recommended length ? three pages) + +:DELETE:END + +Potential Impact on the Balance of Trade +======================================== + +Right now Python is the sixth most popular programming language in the +world. Java and Visual Basic, ranked 1 and 2, are closed source +proprietary American products. The number one reason that is cited by +Java users as to 'why they don't use Python' is that it is too slow. +PyPy will fix this. Right now the Visual Basic users have a terrible +dilemma. Microsoft, in its wisdom, has decided end support of their +current platform, Visual Basic 6.0. After the year 2005, they will +have to move to Microsoft's .NET. This is a tremendous opportunity +for us. They're angry as anything now, and tempted to move, not to +.NET, but to an Open Source language, just so that they can have +control over their own destiny and indicate their displeasure with +Microsoft at the same time. + +Every Java and VB user that switches to Python does not pay license +fees to Sun or Microsoft and helps the European balance of Trade. + +Of course, all the PBF members are predicting that an improved +Python will improve their sales, both domestic and foreign. + +European Dimension +++++++++++++++++++ + +PyPy is an extremely high-profile project, as is only right since we +intend to capture the estimated 175,000 Python users and make them our +user-base. Consequently, it is essential that we have the full +support of the International Python community. Our success in that +regard was more fully spoken about in B3.1, International Standards, +but suffice to say that the only possible dimensions for this project +was 'Europe wide' or 'World Wide'. You could not find the expertise +we needed in one country, and even if you could, you could not attain +international acceptance without involving the top members of the +Python community. At a smaller scale, we would only 'fork the +project' -- make a local version which is of limited use, while the +main line project develops along without you. At best we would have a +ghetto. At the worst we would have two hostile camps slinging insults +at each other over which 'was the real Python'. We have missed all of +these problems by carefully making the PyPy project sufficiently +international, by discussing this proposal for nearly a year at +international conferences, and by inviting non-European Python +luminaries to our week-long intensive code-writing meetings called +'Sprints'. By producing a prototype in 4 coding Sprints (spread out +over half a year) held in locations in Hildesheim, Germany; +Gothenburg, Sweden; Louvain-La-Neuve, Belgium; and Berlin, Germany. +while discussing this all the while on mailing lists and on our +website, we have made certain that we have the proper dimension for +our project to succeed, and become the new reference language for +Python. From pedronis at codespeak.net Sat Oct 11 15:28:22 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 15:28:22 +0200 (MEST) Subject: [pypy-svn] rev 1713 - pypy/trunk/doc/funding Message-ID: <20031011132822.DF19D5A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 15:28:21 2003 New Revision: 1713 Added: pypy/trunk/doc/funding/old_abstract.asc (props changed) - copied unchanged from rev 1712, pypy/trunk/doc/funding/abstract.asc Removed: pypy/trunk/doc/funding/abstract.asc Modified: pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/FIXME Log: now Summary uses Alistair's Abstract. Needs light editing wrt to pypy-funding comments. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sat Oct 11 15:28:21 2003 @@ -48,6 +48,50 @@ :DELETE:END -.. include:: abstract.asc + Main goals + + The main goal is to use innovative implementation techniques and + innovative development techniques to produce a better version of the + popular programming language Python. The new Python will maintain the + semantics of the current implementation but will have the following + benefits: it will be more easily customised and extended, it will be + more portable, it is expected to be more efficient, and it will cover + more programming paradigms in a way that respects the simplicity of the + underlying language. In addition, the project will document and refine + the existing open source development model in the Python + community. Although targetted principally at Python, most of the + techniques will also be applicable to other high level languages. + + The approach + + The project will achieve its goals principally by building on the + strengths of the current open source developer community. In + particular, it will potentiate existing volunteer initiatives that are + working on novel implementation techniques, working within the current + informal framework of design consultation, open source code + repositories and periodic coding workshops. The project will connect + this developer community with relevant experts in academia. It will + also make use of the existing non-profit organisation of Python firms + to bind end users into the design and trialling of the extended Python + implementation. Technically, the project will refine and implement an + innovative approach to language implementation, based on object spaces, + that allows implementation techniques to be integrated in a modular + way. + + Concrete results + + Much anecdotal, and some empirical, evidence suggests that Python is + one of the easiest programming languages to learn and is one of the + languages in which one can code up a given algorithm the fastest. For + these reasons, it is particularly popular among those people whose main + competence lies beyond computer science and for whom programming is a + secondary activity, that is to say most of the people on the + planet. The goal of this project is to enable even more people to + program in Python and ensure that more people will never need to learn + any other language than Python. They will, instead, be able to + concentrate on getting their job done. + +FIXME_NICO FIXME_LAURAF check this + + -FIXME_NICO FIXME_LAURA check this Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 15:28:21 2003 @@ -12,8 +12,9 @@ NOT STARTED B0.1_summary -Decide which summary to use. +Retouch Alistair's Abstract (see pypy-funding comments) Remove garbage +Review NOT STARTED B1.0_objectives Deleted: /pypy/trunk/doc/funding/abstract.asc ============================================================================== --- /pypy/trunk/doc/funding/abstract.asc Sat Oct 11 15:28:21 2003 +++ (empty file) @@ -1,33 +0,0 @@ -The PyPy project will build a portable, fast, flexible, context-aware -programming platform supporting Very-High Level Languages (VHLL) to -yield significant productivity gains in software development. PyPy's -flexible, modular runtime system will be well-suited for networked, -embedded, and mobile devices. - -VHLLs' high semantic level can help extend context-awareness, beyond -the basics (time, location, identity), to a wider variety of context -information and actions. However, VHLLs can often produce slow or large -application and supporting code, hampering their use for small devices. -We will solve this problem via the innovative concept of ObjectSpaces, -high-level formulations of language interpreter components. Explicit, -clear separation of parts yields modularity and flexibility. -ObjectSpaces are themselves coded in a VHLL and can be specialised for -execution speed, memory consumption, or other parameters. - -PyPy will use and target the widely-used Open Source programming -language Python, first developed in 1990 at CWI (Centrum voor Wiskunde -en Informatica) in the Netherlands. By producing the new reference -version of the language, we will have a large impact on the estimated -175,000 Python programmers worldwide. Emphasizing simplicity and -readability, Python has wider appeal among non-programmers, and -particularly among women, than languages perceived as needing extensive -mathematical training and ability. An improved Python can thus help -somewhat in promoting social cohesion and gender equality. - -PyPy will leverage known European strengths in formal methods and -languages, operating by a novel Agile Software Development methodology -for distributed development, including short, high-productivity -meetings known as "Sprints". Systematic efforts to spread the knowledge -produced by the project among academics, SMEs, industry, and other -interested parties, will ensure the project's results and achievements -are fully exploited. From sanxiyn at codespeak.net Sat Oct 11 15:33:57 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 15:33:57 +0200 (MEST) Subject: [pypy-svn] rev 1714 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031011133357.0A3915A40B@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 15:33:56 2003 New Revision: 1714 Modified: pypy/trunk/src/pypy/translator/test/buildcl.py pypy/trunk/src/pypy/translator/translator.py Log: translator.py enhancements. t.source() will now show the original Python source. In 2.3, it goes interactive even without -i option using PYTHONINSPECT. Modified: pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/test/buildcl.py Sat Oct 11 15:33:56 2003 @@ -2,7 +2,7 @@ import sys from cStringIO import StringIO -from pypy.objspace.flow import Space +from pypy.objspace.flow import FlowObjSpace from pypy.translator.gencl import GenCL from vpath.adapter.process import exec_cmd @@ -11,7 +11,7 @@ return int(s) def make_cl_func(func, cl, path): - fun = Space().build_flow(func) + fun = FlowObjSpace().build_flow(func) gen = GenCL(fun) out = gen.emitcode() fp = path.join("test.lisp") Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sat Oct 11 15:33:56 2003 @@ -52,9 +52,10 @@ self.flowgraph = space.build_flow(func) try: import inspect - self.flowgraph.source = inspect.getsource(func) + self.py_source = inspect.getsource(func) except IOError: - pass # e.g. when func is defined interactively + # e.g. when func is defined interactively + self.py_source = "" def gv(self): """Show the control flow graph -- requires 'dot' and 'gv'.""" @@ -72,6 +73,9 @@ self.annotator.build_types(input_args_types) return self.annotator + def source(self): + return self.py_source + def pyrex(self): g = GenPyrex(self.flowgraph) if self.annotator: @@ -105,3 +109,7 @@ return total print __doc__ + + # 2.3 specific -- sanxiyn + import os + os.putenv("PYTHONINSPECT", "1") From lac at codespeak.net Sat Oct 11 15:37:38 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 15:37:38 +0200 (MEST) Subject: [pypy-svn] rev 1715 - pypy/trunk/doc/funding Message-ID: <20031011133738.36DCB5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 15:37:37 2003 New Revision: 1715 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: This is much better now. But I still need Bea's changes. Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 15:37:37 2003 @@ -1,6 +1,6 @@ FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it -FIXME think about including Logilab and DFKI references +FIXME think about where to include Logilab and DFKI references Potential impact =================== @@ -34,6 +34,11 @@ to the abstraction level they are formulated. This will greatly improve the productivity of the individual programmer. +The most obvious way in which we will have an impact is that we will +produce a version of the language which, being superior to anything which +has gone before, will be extremely well used. To that end, our first +target group is the existing community of Python/Jython programmers. + It is always difficult to measure how many people are using a programming language, but of course, we try. Python is generally ranked the sixth most popular computer language in the world. Only @@ -70,11 +75,12 @@ available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. -FWIW, there are about 600,000 http visitors a month to python.org. -About one third of them are using the documentation, which is a -fairly good indicator that they are trying to use the language. -Number of unique IP addresses per month is about 350,000 at this point, -and has been rising steadily from about 250,000 this time last year. +For what its worth, there are about 600,000 http visitors a month to +python.org. About one third of them are using the documentation, +which is a fairly good indicator that they are trying to use the +language. Number of unique IP addresses per month is about 350,000 at +this point, and has been rising steadily from about 250,000 this time +last year. Converting this into an actual estimate of number of users is a bit hard, since: @@ -100,81 +106,11 @@ International Data Corp). In March 2002, Borland said Java had about 1.5 million developers. -We intend to make a new reference version of the Python Programming -Language, which is faster, more flexible, more extensible, and which -gives more control to the individual programmer as to how it is -deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. -Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a PyPy interpreter which will be -executed on several machines but offer a single distributed computation -space and balances the load by moving execution threads around. We can -produce Object Spaces which implement Logic Programming, Aspect Oriented -Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular -languages do not support them. - -An implementation of the language with substantial improvements will -have an immediate direct effect on Eropean competitiveness. Moreover, -the planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. Moreover, some -companies resist using Python because of its speed. If execution -speed, rather than development speed is of paramont importance to -you, then Python is currently not a very good language choice. A -faster Python would have more appeal. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -FIXME_LAURA: shrink it - -:DELETE:BEGIN - -3.1 Contributions to Standards - -Describe contributions to national or international standards which -may be made by the project, if any. - -(Recommended length ? one page) - -:DELETE:END +That's a lot of users. Writing the language which they all use will +have an enormous impact. Contributions to Standards -============================== +========================== There are currently two implementations of Python in common use. The first one, which we will call CPython, but which is what the world @@ -205,7 +141,8 @@ in distinguishing "accidental" from "designed-in" characteristics. (FIXME: I sent Guido mail asking for something quotable. We will see -if he replies.) +if he replies. -- He did. He will say whatever we like. What should +we say?) In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design @@ -218,66 +155,31 @@ standard of the Python language, we would, obviously, have to submit a Standards Track PEP. -PEP authors are responsible for collecting community feedback on a PEP -before submitting it for review. A PEP that has not been discussed on -python-list at python.org and/or python-dev at python.org will not be -accepted. After the authors believe that the PEP is ready, they must -inform the PEP editors (currently Barry Warsaw and David Goodger) that -it is ready for review. - -PEPs are reviewed by Guido van Rossum, the language author, and his -chosen consultants, who may accept or reject a PEP or send it back to -the author(s) for revision. - -If Guido van Rossum accepts the PEP, then its status is changed to -'Accepted'. If the reference implementation is not already complete, -it must then be completed. When the reference implementation is -complete and accepted (again by Guido van Rossum), the status will be -changed to 'Final'. In our case, we wouldn't even write the PEP -without having a complete reference implementation, since what we -would be proposing is to make PyPy and not CPython the complete -reference implementation of the language. Thus the expression of -interest from Guido van Rossum is of extreme significance. It is -likely, though not certain, that PyPy will become the standard -reference implementation of the Python language. - -:: - - FIXME - either say 'very likely if all the goals described in the project - are met' or give some more precise conditions, e.g. existence of a - PyPy version largely compatible with existing C extension modules - The complete details of how to write a PEP are themselves an -Informational PEP -- PEP #1 in fact. Complete details are to be found -in this appendix: +Informational PEP -- PEP #1 in fact. A copy of PEP #1 is provided +for convenience in this appendix: FIXME include http://www.python.org/peps/pep-0001.html -FIXME_LAURA : finish writing - -FIXME_NICO FIXME_ALASTAIR proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. -(Recommended length ? three pages) - -B.3.2 Strategic impact -====================== +PEPs are reviewed by Guido van Rossum, the language author, and his +chosen consultants, who may accept or reject a PEP or send it back to +the author(s) for revision. -:DELETE:END +If Guido van Rossum accepts the PEP, then once the reference +implementation is complete and accepted (again by Guido van Rossum), +the status will be changed to 'Accepted and Final' In our case, we +wouldn't even write the PEP without having a complete reference +implementation, since what we would be proposing is to make PyPy and +not CPython the complete reference implementation of the language. +Thus the expression of interest from Guido van Rossum is of extreme +significance. It is very likely, if all the goals described in the +project PyPy will become the standard reference implementation of the +Python language. In other words, our problems are technical, and not +political. The political will is already there to make PyPy the +reference langauge. We merely need to create it. Strategic impact -====================== +================ PyPy will have a significant strategic impact throughout the IT sector. It produces immensely useful, practical results which shall @@ -286,73 +188,6 @@ province of academia, and significantly enhances the State-of-the-Art, it is not a project that will only satisfy intellectual curiosity. -Python and extremely popular Very-High-Level, Object-Oriented, -programming language. It is always difficult to measure how many -people are using a programming language, but of course, we try. -Python is generally ranked the sixth most popular computer language in -the world. Only Java, Visual Basic, C, C++, and Perl are believed to -have more users. - -The Python FAQ, available at the python language home site of -python.org says:: - - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. - -Googling for 'python programming' gives 1,540,000 hits. -('Python' gives ten million, but many of those Pythons are the actual reptiles.) - -Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', -and in some niches, languages such as PHP, Perl and SQL are popular, -but Python is vastly bigger than the more obscure languages such -as Haskell, OCaml, Smalltalk, ADA, Ruby etc. - -Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are -the 'bleeding edge' developers, who were interested in the new -release of Python first made available at the end of August. There -are, of course, many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version -of Python that came installed with their machine when they bought it. - -FWIW, there are about 600,000 http visitors a month to python.org. -About one third of them are using the documentation, which is a -fairly good indicator that they are trying to use the language. -Number of unique IP addresses per month is about 350,000 at this point, -and has been rising steadily from about 250,000 this time last year. - -Converting this into an actual estimate of number of users is a bit -hard, since: - -- One user may use multiple machines (e.g. home & work & cafe) -- Many sites use a firewall that hides the actual IP (and thus combines - multiple users into one) -- Not all Python users go to python.org every month (or at least not - the Documentation page), because they have already dowloaded the - documentation for local browsing. - -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books *Learning Python*, -*Python in a Nutshell* and *The Python Cookbook* are any indication. -Speaking of books, sales statistics of *The Essential Jython*, -targetted at users of the Python version that compiles to the Java -Virtual Machine indicate that there are at least 10 thousand Jython -users worldwide. - -For comparison, there are something like 12 million programmers world-wide -and roughly 50% of those use Visual Basic (according to International Data -Corp). In March 2002, Borland said Java had about 1.5 million developers. - We intend to make a new reference version of the Python Programming Language, which is faster, more flexible, more extensible, and which gives more control to the individual programmer as to how it is @@ -367,43 +202,9 @@ research, but which are rarely seen in industry because existing popular languages do not support them. -When we are successful, we will have an immediate, large impact as -those 175,000 Python users will all get an improved language.FIXME_LAURA: finish writing -FIXME_NICO FIXME_ALASTAIR: proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Research and Industrial Sectors -======================================================= - -FIXME_ARMIN FIXME_SAMUELE give me 2 sentences or so about why this is -significant research, the sort that is real csc, and will make -a research impact. Add a bit about and we can teach it to -students because its Python, and easy to read, but not more than -2 sentences because I will blather about that in the edu section. - -The 'impact on the industrial sector' was given in more detail -in section B2. This is a summary, indicating precise goals targetted -in our workpackages. For the overview of the European markets, refer -to section B2. - -The particular improvements we intend to make to Python will have an -immediate direct effect on European competitiveness. What is more, the -planned improvements directly target the handheld, mobile, and +An implementation of the language with substantial improvements will +have an immediate direct effect on Eropean competitiveness. Moreover, +the planned improvements directly target the handheld, mobile, and embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high level language with a very small footprint. The new innovative @@ -415,352 +216,17 @@ runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. -The makers of mobile and networked devices, as well as computer game -designers in the Massively-Multi-Player games industry have long -desired a language that could automatically balance loads, or that -allowed massive parallelism through microthreads. They too will get -what they desire. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. - -If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. - -But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -For this reason, European companies and governments are moving to -Open Source software, whenever possible. -If you ... insert here ... - -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -This is particularily frustrating, because Europe is the acknowledged -world leader in language design. CWI, the home of Python, is also the -home of Algol. As the SWOT analysis of FIXME what is it called -- -makes clear, something terribly wrong happens in the process of -European language deployment. First some European academic institute -invents a really terrific language. And then it stops there. Out in -industry, we are still using Visual Basic, or Java, or C++. The SWOT -analysis indicates that the Americans are successful where we are not -because they develop commercial languages, for sale. They may not be -as well-designed or as well-written as European academic languages, -but they are extremely well-funded. Successful paths for language -adoption apparantly take big bucks. - -Python is an academic computer language which has refuted this claim. -In the 14 years since it was first announced, it has grown to be -the sixth most popular programming language, with (probably) between -one and two hundred thousand users world-wide. This has happened -gradually, spreading -through word-of-mouth, as an Open Source project, with a website, -mailing lists, but no big budget or deep pockets. This makes it -a candidate for the largest European Software project with the -largest distribution and user base. If we produce the new reference -language over the next two years, then PyPy will _be_ Python. Their -user base will be our user base. And then we can specifically target -Java, C++ and Visual Basic users, and get them to switch as well. - -It seems melodramatic to speak of 'World Dominance', but in our -meetings and discussions it keeps coming up again, and again. Why -not? We will 'push the envelope' and produce a language which will be -the next standard by which all other languages are compared in -academia, and make sure that it is syntactically 100% compatible with -CPython, which will ensure for easy adoption. If PyPy can deliver a -language which is better suited for networked, embedded, and mobile -devices, why wouldn't we capture market share from Java, C++, and -Visual Basic? - - -FIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) +Python with greater speed will seamlessly improve the offerings of +those European Companies who develop using Python. Moreover, some +companies resist using Python because of its speed. If execution +speed, rather than development speed is of paramont importance to +you, then Python is currently not a very good language choice. A +faster Python would have more appeal. -:DELETE:END Potential Impact on the Balance of Trade ======================================== - -Right now Python is the sixth most popular programming language in the -world. Java and Visual Basic, ranked 1 and 2, are closed source -proprietary American products. The number one reason that is cited by -Java users as to 'why they don't use Python' is that it is too slow. -PyPy will fix this. Right now the Visual Basic users have a terrible -dilemma. Microsoft, in its wisdom, has decided end support of their -current platform, Visual Basic 6.0. After the year 2005, they will -have to move to Microsoft's .NET. This is a tremendous opportunity -for us. They're angry as anything now, and tempted to move, not to -.NET, but to an Open Source language, just so that they can have -control over their own destiny and indicate their displeasure with -Microsoft at the same time. - -Every Java and VB user that switches to Python does not pay license -fees to Sun or Microsoft and helps the European balance of Trade. - -Of course, all the PBF members are predicting that an improved -Python will improve their sales, both domestic and foreign. - -<<<<<<< .mine -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -It is not as if there is a shortage of people who would be interested -in learning such things, if the source were made available. Many -people have taken this step by learning how CPython does its stuff. -But still there is a barrier. If you want to know how CPython does -things, you need to learn C. C is a notoriously difficult language to -learn. - -But let me quote from an article posted to the Python-in-Education -mailing list. - -FIXME -- I promised Arthur I would fix any typos:: - - Date: Sun, 14 Sep 2003 11:52:05 -0400 - From: Arthur - To: edu-sig at python.org - Subject: [Edu-sig] re : If the PyPy Project ... - - List-Id: Python in education - - Terry - - - >Since I presume the goal of PyPy is to implement *Python* in Python, - >wouldn't the implementation language be rather insignificant to an - >end-user such as an educator? Why would it be "better" than CPython? - - For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some - time in the complex realm with PyGeo - a simple version of the complex - realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. - - Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue - are to be dealt with. Not that I got there, yet - but I did seem to have an - avenue to explore I would not have with CPython - as someone who doesn't C, - and has no intention of trying, seriously, to do so. - - As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It - will make Python, I believe, a more attractive educational language, because - it will make someone with a strong foundation in Python - as the language of - choice - a more self-sufficient programmer. - - Presumably - the point is - there will be less cases where the right - approach would be an extension module in C or C++, and a sense of - fundamental compromise should one not be equipped to go there. Many - thousands of folks - using VB and the like - already do involved, - highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put - Python more squarely in that "space". - - Is any of this so, or just hope? - - Art - - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - -Here is somebody who is hoping we can give him a language he can -understand. Python already is an excellent teaching language. PyPy -will be a better one. - -This project has to be done at the European or the International -level. That's where we all live. -DISEMMINATION!!!! -Since education is a primary goal of the project, we will take every -opportunity to disseminate PyPy. The source will always be freely -available from our website. We will continue to give talks about PyPy -at EuroPython, Python-UK, OSCON (the International Open Source -Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS - - How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications), ECOOP (European Conference -on Object-Oriented Programming), the MIT Lightweight Languages -Workshops and the like as the next target? - -ASK STOCKHOLM -- will the EU pay for us to go to conferences? even -ones we were going to attend anyway? - -These talks will create interest as well as teach techniques. We will -submit a PEP and push to get PyPy made the reference implementation of -the Python programming language(*). We will continue to discuss PyPy on -our own mailing lists, as well as other Python mailing lists such as -the Python-in-Education list, and the Usenet Newsgroup -comp.lang.python. We already have an IRC channel, #pypy on -irc.freenode.net where live online discussions happen, and where we -communicate with each other while we are apart. Beyond that -- we are -willing to take any actions the EU would like to fund. - -:: - - FIXME - (*) emphasis on this one? If this really happens we'll arguably - become the software European Project with the largest distribution - and user base ever (XXX rephrase :-) - Also mention that the issue (and the word 'PEP') is discussed - later in B3.1_standards.txt? - -Ask Stockholm We think you get no money for this in a STREP. True? - -ASK STOCKHOLM -- -can we get some money to give Freenode? -re: 'Indicate what account is taken of other national or international -research activities.' -- Samuele and Armin read the literature all -the time. What do I say? -ppppppppppppppp======= ->>>>>>> .r1670 -FIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Industrial and Research Sectors -======================================================= - -The particular improvements we intend to make to Python will have an -immediate direct effect on Eropean competitiveness. What is more, the -planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -The makers of mobile and networked devices, as well as computer game -designers in the Massively-Multi-Player games industry have long -desired a language that could automatically balance loads, or that -allowed massive parallelism through microthreads. They too will get -what they desire. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. - -Furthermore, one of the greatest threats to European competitiveness +One of the greatest threats to European competitiveness is its dependence upon proprietary closed source software, mostly made in the United States. This is not only the matter of money being spent in the United States is money that is not being spent here, @@ -785,359 +251,6 @@ these decisions because they make business sense for Microsoft, regardless of the effects on European software developers. -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -It is not as if there is a shortage of people who would be interested -in learning such things, if the source were made available. Many -people have taken this step by learning how CPython does its stuff. -But still there is a barrier. If you want to know how CPython does -things, you need to learn C. C is a notoriously difficult language to -learn. - -But let me quote from an article posted to the Python-in-Education -mailing list. - -FIXME -- I promised Arthur I would fix any typos:: - - Date: Sun, 14 Sep 2003 11:52:05 -0400 - From: Arthur - To: edu-sig at python.org - Subject: [Edu-sig] re : If the PyPy Project ... - - List-Id: Python in education - - Terry - - - >Since I presume the goal of PyPy is to implement *Python* in Python, - >wouldn't the implementation language be rather insignificant to an - >end-user such as an educator? Why would it be "better" than CPython? - - For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some - time in the complex realm with PyGeo - a simple version of the complex - realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. - - Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue - are to be dealt with. Not that I got there, yet - but I did seem to have an - avenue to explore I would not have with CPython - as someone who doesn't C, - and has no intention of trying, seriously, to do so. - - As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It - will make Python, I believe, a more attractive educational language, because - it will make someone with a strong foundation in Python - as the language of - choice - a more self-sufficient programmer. - - Presumably - the point is - there will be less cases where the right - approach would be an extension module in C or C++, and a sense of - fundamental compromise should one not be equipped to go there. Many - thousands of folks - using VB and the like - already do involved, - highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put - Python more squarely in that "space". - - Is any of this so, or just hope? - - Art - - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - -Here is somebody who is hoping we can give him a language he can -understand. Python already is an excellent teaching language. PyPy -will be a better one. - -This project has to be done at the European or the International -level. That's where we all live. -DISEMMINATION!!!! -Since education is a primary goal of the project, we will take every -opportunity to disseminate PyPy. The source will always be freely -available from our website. We will continue to give talks about PyPy -at EuroPython, Python-UK, OSCON (the International Open Source -Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS - - How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications), ECOOP (European Conference -on Object-Oriented Programming), the MIT Lightweight Languages -Workshops and the like as the next target? - -ASK STOCKHOLM -- will the EU pay for us to go to conferences? even -ones we were going to attend anyway? - -These talks will create interest as well as teach techniques. We will -submit a PEP and push to get PyPy made the reference implementation of -the Python programming language(*). We will continue to discuss PyPy on -our own mailing lists, as well as other Python mailing lists such as -the Python-in-Education list, and the Usenet Newsgroup -comp.lang.python. We already have an IRC channel, #pypy on -irc.freenode.net where live online discussions happen, and where we -communicate with each other while we are apart. Beyond that -- we are -willing to take any actions the EU would like to fund. - -:: - - FIXME - (*) emphasis on this one? If this really happens we'll arguably - become the software European Project with the largest distribution - and user base ever (XXX rephrase :-) - Also mention that the issue (and the word 'PEP') is discussed - later in B3.1_standards.txt? - -Ask Stockholm We think you get no money for this in a STREP. True? - -ASK STOCKHOLM -- -can we get some money to give Freenode? -re: 'Indicate what account is taken of other national or international -research activities.' -- Samuele and Armin read the literature all -the time. What do I say? -pppppppppppppppFIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Industrial and Research Sectors -======================================================= - -The particular improvements we intend to make to Python will have an -immediate direct effect on Eropean competitiveness. What is more, the -planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -The makers of mobile and networked devices, as well as computer game -designers in the Massively-Multi-Player games industry have long -desired a language that could automatically balance loads, or that -allowed massive parallelism through microthreads. They too will get -what they desire. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -It is not as if there is a shortage of people who would be interested -in learning such things, if the source were made available. Many -people have taken this step by learning how CPython does its stuff. -But still there is a barrier. If you want to know how CPython does -things, you need to learn C. C is a notoriously difficult language to -learn. - -But let me quote from an article posted to the Python-in-Education -mailing list. - -FIXME -- I promised Arthur I would fix any typos:: - - Date: Sun, 14 Sep 2003 11:52:05 -0400 - From: Arthur - To: edu-sig at python.org - Subject: [Edu-sig] re : If the PyPy Project ... - - List-Id: Python in education - - Terry - - - >Since I presume the goal of PyPy is to implement *Python* in Python, - >wouldn't the implementation language be rather insignificant to an - >end-user such as an educator? Why would it be "better" than CPython? - - For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some - time in the complex realm with PyGeo - a simple version of the complex - realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. - - Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue - are to be dealt with. Not that I got there, yet - but I did seem to have an - avenue to explore I would not have with CPython - as someone who doesn't C, - and has no intention of trying, seriously, to do so. - - As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It - will make Python, I believe, a more attractive educational language, because - it will make someone with a strong foundation in Python - as the language of - choice - a more self-sufficient programmer. - - Presumably - the point is - there will be less cases where the right - approach would be an extension module in C or C++, and a sense of - fundamental compromise should one not be equipped to go there. Many - thousands of folks - using VB and the like - already do involved, - highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put - Python more squarely in that "space". - - Is any of this so, or just hope? - - Art - - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - -Here is somebody who is hoping we can give him a language he can -understand. Python already is an excellent teaching language. PyPy -will be a better one. - -This project has to be done at the European or the International -level. That's where we all live. - -Since education is a primary goal of the project, we will take every -opportunity to disseminate PyPy. The source will always be freely -available from our website. We will continue to give talks about PyPy -at EuroPython, Python-UK, OSCON (the International Open Source -Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS - - How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications), ECOOP (European Conference -on Object-Oriented Programming), the MIT Lightweight Languages -Workshops and the like as the next target? - -ASK STOCKHOLM -- will the EU pay for us to go to conferences? even -ones we were going to attend anyway? - -These talks will create interest as well as teach techniques. We will -submit a PEP and push to get PyPy made the reference implementation of -the Python programming language(*). We will continue to discuss PyPy on -our own mailing lists, as well as other Python mailing lists such as -the Python-in-Education list, and the Usenet Newsgroup -comp.lang.python. We already have an IRC channel, #pypy on -irc.freenode.net where live online discussions happen, and where we -communicate with each other while we are apart. Beyond that -- we are -willing to take any actions the EU would like to fund. - -:: - - FIXME - (*) emphasis on this one? If this really happens we'll arguably - become the software European Project with the largest distribution - and user base ever (XXX rephrase :-) - Also mention that the issue (and the word 'PEP') is discussed - later in B3.1_standards.txt? - -Ask Stockholm We think you get no money for this in a STREP. True? - -ASK STOCKHOLM -- -can we get some money to give Freenode? -re: 'Indicate what account is taken of other national or international -research activities.' -- Samuele and Armin read the literature all -the time. What do I say? -pppppppppppppppFIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Balance of Trade -======================================== - Right now Python is the sixth most popular programming language in the world. Java and Visual Basic, ranked 1 and 2, are closed source proprietary American products. The number one reason that is cited by From lac at codespeak.net Sat Oct 11 15:41:05 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 15:41:05 +0200 (MEST) Subject: [pypy-svn] rev 1716 - pypy/trunk/doc/funding Message-ID: <20031011134105.BE61B5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 15:41:04 2003 New Revision: 1716 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: add stubs for missing bits Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 15:41:04 2003 @@ -298,3 +298,18 @@ website, we have made certain that we have the proper dimension for our project to succeed, and become the new reference language for Python. + +Innovation Related Activities +----------------------------- + +Management Of Knowledge Produced +-------------------------------- + +Protection of Intellectual Property +----------------------------------- + +Dissemination +------------- + +Exploitation +------------ \ No newline at end of file From pedronis at codespeak.net Sat Oct 11 15:42:39 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 15:42:39 +0200 (MEST) Subject: [pypy-svn] rev 1717 - pypy/trunk/doc/funding Message-ID: <20031011134239.5481B5A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 15:42:38 2003 New Revision: 1717 Modified: pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/FIXME Log: removed garbage from Summary up to unfinished parts more detailed update of related FIXMEs Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sat Oct 11 15:42:38 2003 @@ -1,11 +1,3 @@ -:DELETE:BEGIN - -Proposal Summary Page -======================= - --- we create this header in the document, so it doesn't appear here. - -:DELETE:END **Proposal full title:** @@ -36,18 +28,10 @@ benefit. The Python Business Forum, a non-profit Trade organisation of FIXME WHAT IS THE JABBER -- SIGNIFICANT PYTHON is poised to take advantage of this new development. + FIXME_LAURA FIXME_BEA ADD COMMUNICATION STRATEGIC OBJ -FIXME_LAURA FIXME_BEA ADD COMMUNICATION STRATEGIC OBJ **Proposal abstract:** -:DELETE:BEGIN - -copied from Part A - -(Actually, we will paste this one INTO Part A) - -:DELETE:END - Main goals The main goal is to use innovative implementation techniques and @@ -91,7 +75,17 @@ any other language than Python. They will, instead, be able to concentrate on getting their job done. -FIXME_NICO FIXME_LAURAF check this + + + + + + + + + + + Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 15:42:38 2003 @@ -12,8 +12,19 @@ NOT STARTED B0.1_summary +Check Full Title, do we want this way +Finish, polish Strategic Objectives + Retouch Alistair's Abstract (see pypy-funding comments) -Remove garbage + - maybe mention sprints in the abstract? agile methodologies? + - > The project will achieve its goals principally by building on the + > strengths of the current open source developer community. + + i am probably too sensitive here but this doesn't seem to imply + that we are *part* of the open-source developer community. Many + companies have tried to "exploit" the open-source dev-community. + we don't want that. we want to contribute, connect and integrate. + Review NOT STARTED From pedronis at codespeak.net Sat Oct 11 15:57:15 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 15:57:15 +0200 (MEST) Subject: [pypy-svn] rev 1718 - pypy/trunk/doc/funding Message-ID: <20031011135715.5CB955A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 15:57:14 2003 New Revision: 1718 Removed: pypy/trunk/doc/funding/B3.0_impact.txt pypy/trunk/doc/funding/B3.1_standards.txt pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade pypy/trunk/doc/funding/B3.2.3_european_dimension.txt pypy/trunk/doc/funding/B3.2.strategic_impact.txt Log: killed other B3.* files, now there is only One - B3.allmerged.txt. Deleted: /pypy/trunk/doc/funding/B3.0_impact.txt ============================================================================== --- /pypy/trunk/doc/funding/B3.0_impact.txt Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,162 +0,0 @@ -FIXME_LAURA: currently writing this -FIXME_NICO FIXME_ALASTAIR : proof-read it -FIXME think about including Logilab and DFKI references - -Potential impact -=================== -The successful execution of the PyPy project will deliver a practical usefull -implementation of a Very-High-Level, Object-Oriented, Open Source programming -language. - -This will impact software development in several important ways. - - - The cost of software development will diminish. - - - The time to market will be reduced. - - - The cost of software maintenance will be reduced. - - - Reduce barriers to market a product. - - -The development methods of the PyPy project will prove that using Sprints, -pair programming and test driven development, results in : - - - Broader understanding of the code base among developers - - - Rapid developments from ideas to working code - - - Sustainable project progress through unittesting - -The cost of software development is essentially labor costs, time to -market and costs of software tools. Having a (free) flexible VHLL will -ease the development through the fact that problems are solved closer -to the abstraction level they are formulated. This will greatly -improve the productivity of the individual programmer. - -It is always difficult to measure how many people are using a -programming language, but of course, we try. Python is generally -ranked the sixth most popular computer language in the world. Only -Java, Visual Basic, C, C++, and Perl are believed to have more users. - -The Python FAQ, available at the python language home site of -python.org says:: - - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. - -Googling for 'python programming' gives 1,540,000 hits. ('Python' gives -ten million, but many of those Pythons are the actual reptiles.) - -Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', -and in some niches, languages such as PHP, Perl and SQL are popular, -but Python is vastly bigger than the more obscure languages such -as Haskell, OCaml, Smalltalk, ADA, Ruby etc. - -Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are the -'bleeding edge' developers, who were interested in the new release of -Python first made available at the end of August. At the other end of -the spectrum, there are many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version -of Python that came installed with their machine when they bought it. - -FWIW, there are about 600,000 http visitors a month to python.org. -About one third of them are using the documentation, which is a -fairly good indicator that they are trying to use the language. -Number of unique IP addresses per month is about 350,000 at this point, -and has been rising steadily from about 250,000 this time last year. - -Converting this into an actual estimate of number of users is a bit -hard, since: - -1) One user may use multiple machines (e.g. home & work & cafe) -2) Many sites use a firewall that hides the actual IP (and thus combines - multiple users into one) -3) Not all Python users go to python.org every month (or at least not - the Documentation page), because they have already dowloaded the - documentation for local browsing. - -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books *Learning Python*, -*Python in a Nutshell* and *The Python Cookbook* are to be considered -relevant. Speaking of books, sales statistics of *The Essential -Jython* targetted at users of the Python version that compiles to -the Java Virtual Machine indicate that there are at least 10 thousand -Jython users worldwide. - -For comparison, there are something like 12 million programmers -world-wide and roughly 50% of those use Visual Basic (according to -International Data Corp). In March 2002, Borland said Java had about -1.5 million developers. - -We intend to make a new reference version of the Python Programming -Language, which is faster, more flexible, more extensible, and which -gives more control to the individual programmer as to how it is -deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. -Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a PyPy interpreter which will be -executed on several machines but offer a single distributed computation -space and balances the load by moving execution threads around. We can -produce Object Spaces which implement Logic Programming, Aspect Oriented -Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular -languages do not support them. - -An implementation of the language with substantial improvements will -have an immediate direct effect on Eropean competitiveness. Moreover, -the planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. Moreover, some -companies resist using Python because of its speed. If execution -speed, rather than development speed is of paramont importance to -you, then Python is currently not a very good language choice. A -faster Python would have more appeal. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - Deleted: /pypy/trunk/doc/funding/B3.1_standards.txt ============================================================================== --- /pypy/trunk/doc/funding/B3.1_standards.txt Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,93 +0,0 @@ -FIXME_LAURA: shrink it - -:DELETE:BEGIN - -3.1 Contributions to Standards - -Describe contributions to national or international standards which -may be made by the project, if any. - -(Recommended length ? one page) - -:DELETE:END - -Contributions to Standards -============================== - -There are currently two implementations of Python in common use. The -first one, which we will call CPython, but which is what the world -knows as Python, is a C implementation of the Python Programming -language which compiles to its own virtual machine. The second one is -Jython, a pure-Python implementation which compiles to the Java -virtual machine. There is no ANSI standard or similar for Python. -Right now the de-facto standard for the programming language is -'whatever CPython does'. This is far from ideal, and questions arise, -especially from the developers of Jython as to which CPython language -behaviours are essential to the Python language itself, and which are -mere accidents of this particular implementation. - -For example, the garbage-collection behavior of CPython is implemented -by reference-counting ensuring that an object is finalized as soon as -the last reference to it goes away. That would be extremely -inconvenient (close to impossible) to implement on standard Java -Virtual Machines, which have a deliberately under-specified garbage -collector (it can collect anything it pleases whenever it pleases...). -In this case, the Jython designers had to obtain an explicit ruling -from Guido van Rossum, Python's designer -- who ruled that the -behavior of CPython was 'accidental' in this case, and not intrinsic -to the Python language specification. - -Guido van Rossum has expressed interest in giving PyPy the status of -'implementation standard' (executable specification) of the Python -programming language. PyPy's ObjectSpaces flexibility will be crucial -in distinguishing "accidental" from "designed-in" characteristics. - -(FIXME: I sent Guido mail asking for something quotable. We will see -if he replies.) - -In order to do this we will have to do something which is called -'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design -document providing information to the Python community, or describing -a new feature for Python. There are two kinds of PEPs. A Standards -Track PEP describes a new feature or implementation for Python. An -Informational PEP describes a Python design issue, or provides general -guidelines or information to the Python community, but does not -propose a new feature. If we proposed to make PyPy the reference -standard of the Python language, we would, obviously, have to submit a -Standards Track PEP. - -PEP authors are responsible for collecting community feedback on a PEP -before submitting it for review. A PEP that has not been discussed on -python-list at python.org and/or python-dev at python.org will not be -accepted. After the authors believe that the PEP is ready, they must -inform the PEP editors (currently Barry Warsaw and David Goodger) that -it is ready for review. - -PEPs are reviewed by Guido van Rossum, the language author, and his -chosen consultants, who may accept or reject a PEP or send it back to -the author(s) for revision. - -If Guido van Rossum accepts the PEP, then its status is changed to -'Accepted'. If the reference implementation is not already complete, -it must then be completed. When the reference implementation is -complete and accepted (again by Guido van Rossum), the status will be -changed to 'Final'. In our case, we wouldn't even write the PEP -without having a complete reference implementation, since what we -would be proposing is to make PyPy and not CPython the complete -reference implementation of the language. Thus the expression of -interest from Guido van Rossum is of extreme significance. It is -likely, though not certain, that PyPy will become the standard -reference implementation of the Python language. - -:: - - FIXME - either say 'very likely if all the goals described in the project - are met' or give some more precise conditions, e.g. existence of a - PyPy version largely compatible with existing C extension modules - -The complete details of how to write a PEP are themselves an -Informational PEP -- PEP #1 in fact. Complete details are to be found -in this appendix: - -FIXME include http://www.python.org/peps/pep-0001.html Deleted: /pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research ============================================================================== --- /pypy/trunk/doc/funding/B3.2.1_industrial_commerce_research Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,145 +0,0 @@ -FIXME_LAURA: finish writing -FIXME_NICO FIXME_ALASTAIR: proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Research and Industrial Sectors -======================================================= - -FIXME_ARMIN FIXME_SAMUELE give me 2 sentences or so about why this is -significant research, the sort that is real csc, and will make -a research impact. Add a bit about and we can teach it to -students because its Python, and easy to read, but not more than -2 sentences because I will blather about that in the edu section. - -The 'impact on the industrial sector' was given in more detail -in section B2. This is a summary, indicating precise goals targetted -in our workpackages. For the overview of the European markets, refer -to section B2. - -The particular improvements we intend to make to Python will have an -immediate direct effect on European competitiveness. What is more, the -planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -The makers of mobile and networked devices, as well as computer game -designers in the Massively-Multi-Player games industry have long -desired a language that could automatically balance loads, or that -allowed massive parallelism through microthreads. They too will get -what they desire. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. - -If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. - -But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -For this reason, European companies and governments are moving to -Open Source software, whenever possible. -If you ... insert here ... - -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -This is particularily frustrating, because Europe is the acknowledged -world leader in language design. CWI, the home of Python, is also the -home of Algol. As the SWOT analysis of FIXME what is it called -- -makes clear, something terribly wrong happens in the process of -European language deployment. First some European academic institute -invents a really terrific language. And then it stops there. Out in -industry, we are still using Visual Basic, or Java, or C++. The SWOT -analysis indicates that the Americans are successful where we are not -because they develop commercial languages, for sale. They may not be -as well-designed or as well-written as European academic languages, -but they are extremely well-funded. Successful paths for language -adoption apparantly take big bucks. - -Python is an academic computer language which has refuted this claim. -In the 14 years since it was first announced, it has grown to be -the sixth most popular programming language, with (probably) between -one and two hundred thousand users world-wide. This has happened -gradually, spreading -through word-of-mouth, as an Open Source project, with a website, -mailing lists, but no big budget or deep pockets. This makes it -a candidate for the largest European Software project with the -largest distribution and user base. If we produce the new reference -language over the next two years, then PyPy will _be_ Python. Their -user base will be our user base. And then we can specifically target -Java, C++ and Visual Basic users, and get them to switch as well. - -It seems melodramatic to speak of 'World Dominance', but in our -meetings and discussions it keeps coming up again, and again. Why -not? We will 'push the envelope' and produce a language which will be -the next standard by which all other languages are compared in -academia, and make sure that it is syntactically 100% compatible with -CPython, which will ensure for easy adoption. If PyPy can deliver a -language which is better suited for networked, embedded, and mobile -devices, why wouldn't we capture market share from Java, C++, and -Visual Basic? - - Deleted: /pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade ============================================================================== --- /pypy/trunk/doc/funding/B3.2.2.2_balance_of_trade Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,42 +0,0 @@ -FIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Balance of Trade -======================================== - -Right now Python is the sixth most popular programming language in the -world. Java and Visual Basic, ranked 1 and 2, are closed source -proprietary American products. The number one reason that is cited by -Java users as to 'why they don't use Python' is that it is too slow. -PyPy will fix this. Right now the Visual Basic users have a terrible -dilemma. Microsoft, in its wisdom, has decided end support of their -current platform, Visual Basic 6.0. After the year 2005, they will -have to move to Microsoft's .NET. This is a tremendous opportunity -for us. They're angry as anything now, and tempted to move, not to -.NET, but to an Open Source language, just so that they can have -control over their own destiny and indicate their displeasure with -Microsoft at the same time. - -Every Java and VB user that switches to Python does not pay license -fees to Sun or Microsoft and helps the European balance of Trade. - -Of course, all the PBF members are predicting that an improved -Python will improve their sales, both domestic and foreign. - Deleted: /pypy/trunk/doc/funding/B3.2.3_european_dimension.txt ============================================================================== --- /pypy/trunk/doc/funding/B3.2.3_european_dimension.txt Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,28 +0,0 @@ -European Dimension -++++++++++++++++++ - -PyPy is an extremely high-profile project, as is only right since we -intend to capture the estimated 175,000 Python users and make them our -user-base. Consequently, it is essential that we have the full -support of the International Python community. Our success in that -regard was more fully spoken about in B3.1, International Standards, -but suffice to say that the only possible dimensions for this project -was 'Europe wide' or 'World Wide'. You could not find the expertise -we needed in one country, and even if you could, you could not attain -international acceptance without involving the top members of the -Python community. At a smaller scale, we would only 'fork the -project' -- make a local version which is of limited use, while the -main line project develops along without you. At best we would have a -ghetto. At the worst we would have two hostile camps slinging insults -at each other over which 'was the real Python'. We have missed all of -these problems by carefully making the PyPy project sufficiently -international, by discussing this proposal for nearly a year at -international conferences, and by inviting non-European Python -luminaries to our week-long intensive code-writing meetings called -'Sprints'. By producing a prototype in 4 coding Sprints (spread out -over half a year) held in locations in Hildesheim, Germany; -Gothenburg, Sweden; Louvain-La-Neuve, Belgium; and Berlin, Germany. -while discussing this all the while on mailing lists and on our -website, we have made certain that we have the proper dimension for -our project to succeed, and become the new reference language for -Python. Deleted: /pypy/trunk/doc/funding/B3.2.strategic_impact.txt ============================================================================== --- /pypy/trunk/doc/funding/B3.2.strategic_impact.txt Sat Oct 11 15:57:14 2003 +++ (empty file) @@ -1,116 +0,0 @@ -FIXME_LAURA : finish writing - -FIXME_NICO FIXME_ALASTAIR proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -B.3.2 Strategic impact -====================== - -:DELETE:END - -Strategic impact -====================== - -PyPy will have a significant strategic impact throughout the IT -sector. It produces immensely useful, practical results which shall -be immediately exploited by Python developers world-wide. While it -addresses issues which have hitherto mostly remained the special -province of academia, and significantly enhances the State-of-the-Art, -it is not a project that will only satisfy intellectual curiosity. - -Python and extremely popular Very-High-Level, Object-Oriented, -programming language. It is always difficult to measure how many -people are using a programming language, but of course, we try. -Python is generally ranked the sixth most popular computer language in -the world. Only Java, Visual Basic, C, C++, and Perl are believed to -have more users. - -The Python FAQ, available at the python language home site of -python.org says:: - - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. - -Googling for 'python programming' gives 1,540,000 hits. -('Python' gives ten million, but many of those Pythons are the actual reptiles.) - -Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', -and in some niches, languages such as PHP, Perl and SQL are popular, -but Python is vastly bigger than the more obscure languages such -as Haskell, OCaml, Smalltalk, ADA, Ruby etc. - -Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are -the 'bleeding edge' developers, who were interested in the new -release of Python first made available at the end of August. There -are, of course, many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version -of Python that came installed with their machine when they bought it. - -FWIW, there are about 600,000 http visitors a month to python.org. -About one third of them are using the documentation, which is a -fairly good indicator that they are trying to use the language. -Number of unique IP addresses per month is about 350,000 at this point, -and has been rising steadily from about 250,000 this time last year. - -Converting this into an actual estimate of number of users is a bit -hard, since: - -- One user may use multiple machines (e.g. home & work & cafe) -- Many sites use a firewall that hides the actual IP (and thus combines - multiple users into one) -- Not all Python users go to python.org every month (or at least not - the Documentation page), because they have already dowloaded the - documentation for local browsing. - -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books *Learning Python*, -*Python in a Nutshell* and *The Python Cookbook* are any indication. -Speaking of books, sales statistics of *The Essential Jython*, -targetted at users of the Python version that compiles to the Java -Virtual Machine indicate that there are at least 10 thousand Jython -users worldwide. - -For comparison, there are something like 12 million programmers world-wide -and roughly 50% of those use Visual Basic (according to International Data -Corp). In March 2002, Borland said Java had about 1.5 million developers. - -We intend to make a new reference version of the Python Programming -Language, which is faster, more flexible, more extensible, and which -gives more control to the individual programmer as to how it is -deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. -Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a PyPy interpreter which will be -executed on several machines but offer a single distributed computation -space and balances the load by moving execution threads around. We can -produce Object Spaces which implement Logic Programming, Aspect Oriented -Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular -languages do not support them. - -When we are successful, we will have an immediate, large impact as -those 175,000 Python users will all get an improved language. \ No newline at end of file From pedronis at codespeak.net Sat Oct 11 16:04:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 16:04:30 +0200 (MEST) Subject: [pypy-svn] rev 1719 - pypy/trunk/doc/funding Message-ID: <20031011140430.24AB85A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 16:04:30 2003 New Revision: 1719 Added: pypy/trunk/doc/funding/alistair_abstract.asc Modified: pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/FIXME Log: abstract again as included file. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sat Oct 11 16:04:30 2003 @@ -32,48 +32,9 @@ **Proposal abstract:** - Main goals +.. include: alistair_abstract.asc + - The main goal is to use innovative implementation techniques and - innovative development techniques to produce a better version of the - popular programming language Python. The new Python will maintain the - semantics of the current implementation but will have the following - benefits: it will be more easily customised and extended, it will be - more portable, it is expected to be more efficient, and it will cover - more programming paradigms in a way that respects the simplicity of the - underlying language. In addition, the project will document and refine - the existing open source development model in the Python - community. Although targetted principally at Python, most of the - techniques will also be applicable to other high level languages. - - The approach - - The project will achieve its goals principally by building on the - strengths of the current open source developer community. In - particular, it will potentiate existing volunteer initiatives that are - working on novel implementation techniques, working within the current - informal framework of design consultation, open source code - repositories and periodic coding workshops. The project will connect - this developer community with relevant experts in academia. It will - also make use of the existing non-profit organisation of Python firms - to bind end users into the design and trialling of the extended Python - implementation. Technically, the project will refine and implement an - innovative approach to language implementation, based on object spaces, - that allows implementation techniques to be integrated in a modular - way. - - Concrete results - - Much anecdotal, and some empirical, evidence suggests that Python is - one of the easiest programming languages to learn and is one of the - languages in which one can code up a given algorithm the fastest. For - these reasons, it is particularly popular among those people whose main - competence lies beyond computer science and for whom programming is a - secondary activity, that is to say most of the people on the - planet. The goal of this project is to enable even more people to - program in Python and ensure that more people will never need to learn - any other language than Python. They will, instead, be able to - concentrate on getting their job done. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 16:04:30 2003 @@ -16,6 +16,7 @@ Finish, polish Strategic Objectives Retouch Alistair's Abstract (see pypy-funding comments) +it is actually in alistair_abstract.asc ! - maybe mention sprints in the abstract? agile methodologies? - > The project will achieve its goals principally by building on the > strengths of the current open source developer community. Added: pypy/trunk/doc/funding/alistair_abstract.asc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/alistair_abstract.asc Sat Oct 11 16:04:30 2003 @@ -0,0 +1,42 @@ + Main goals + + The main goal is to use innovative implementation techniques and + innovative development techniques to produce a better version of the + popular programming language Python. The new Python will maintain the + semantics of the current implementation but will have the following + benefits: it will be more easily customised and extended, it will be + more portable, it is expected to be more efficient, and it will cover + more programming paradigms in a way that respects the simplicity of the + underlying language. In addition, the project will document and refine + the existing open source development model in the Python + community. Although targetted principally at Python, most of the + techniques will also be applicable to other high level languages. + + The approach + + The project will achieve its goals principally by building on the + strengths of the current open source developer community. In + particular, it will potentiate existing volunteer initiatives that are + working on novel implementation techniques, working within the current + informal framework of design consultation, open source code + repositories and periodic coding workshops. The project will connect + this developer community with relevant experts in academia. It will + also make use of the existing non-profit organisation of Python firms + to bind end users into the design and trialling of the extended Python + implementation. Technically, the project will refine and implement an + innovative approach to language implementation, based on object spaces, + that allows implementation techniques to be integrated in a modular + way. + + Concrete results + + Much anecdotal, and some empirical, evidence suggests that Python is + one of the easiest programming languages to learn and is one of the + languages in which one can code up a given algorithm the fastest. For + these reasons, it is particularly popular among those people whose main + competence lies beyond computer science and for whom programming is a + secondary activity, that is to say most of the people on the + planet. The goal of this project is to enable even more people to + program in Python and ensure that more people will never need to learn + any other language than Python. They will, instead, be able to + concentrate on getting their job done. From pedronis at codespeak.net Sat Oct 11 16:06:24 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sat, 11 Oct 2003 16:06:24 +0200 (MEST) Subject: [pypy-svn] rev 1720 - pypy/trunk/doc/funding Message-ID: <20031011140624.3A8AE5A40B@thoth.codespeak.net> Author: pedronis Date: Sat Oct 11 16:06:23 2003 New Revision: 1720 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: wrong ReSt, no cookie. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sat Oct 11 16:06:23 2003 @@ -32,7 +32,7 @@ **Proposal abstract:** -.. include: alistair_abstract.asc +.. include:: alistair_abstract.asc From hpk at codespeak.net Sat Oct 11 16:18:38 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 11 Oct 2003 16:18:38 +0200 (MEST) Subject: [pypy-svn] rev 1721 - pypy/trunk/doc/funding Message-ID: <20031011141838.24FA15A40B@thoth.codespeak.net> Author: hpk Date: Sat Oct 11 16:18:37 2003 New Revision: 1721 Modified: pypy/trunk/doc/funding/FIXME Log: start to work on B2.0 relevance Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 16:18:37 2003 @@ -41,7 +41,7 @@ 2 sections to write Fix fixmes Modify text? Make decision. -NOT STARTED +STARTED: holger B3.0_impact Remove garbage @@ -192,4 +192,4 @@ project_planning.xml Needs general agreement before we copy info to B6.7* files. -NOT STARTED. \ No newline at end of file +NOT STARTED. From jacob at codespeak.net Sat Oct 11 16:22:25 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sat, 11 Oct 2003 16:22:25 +0200 (MEST) Subject: [pypy-svn] rev 1722 - pypy/trunk/doc/funding Message-ID: <20031011142225.A29615A40B@thoth.codespeak.net> Author: jacob Date: Sat Oct 11 16:22:24 2003 New Revision: 1722 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt pypy/trunk/doc/funding/FIXME Log: Draft for review. Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Sat Oct 11 16:22:24 2003 @@ -1,53 +1,112 @@ Other Issues ================== -:DELETE:BEGIN - -B.7 Other issues - -B.7.1. If there are ethical or gender issues associated with the -subject of the proposal, show they have been adequately taken into -account - indicate which national and international regulations are -applicable and explain how they will be respected. Explore potential -ethical aspects of the implementation of project results. Include the -Ethical issues form given below. - -:DELETE:END - Ethical Considerations ----------------------- -FIXME write this. +Writing programs is by its nature a mental exercise which requires +knowledge, structured thought and tenacity. The result can then be run +on a piece of equipment that is very general in nature and that can be +mass produced at fairly low cost. This is an opportunity for making +the skill of program writing ubiquitous, bringing it to less developed +countries and regions and to groups of people who need new +opportunities. + +This is best done with a fast, powerful, easy to use language that is +equally available to everyone. Python in the Pypy implementation +intends to be such a language. -:DELETE:BEGIN +Gender Issues +---------------- -B.7.2 Are there other EC-policy related issues, and are they taken -into account? Demonstrate a readiness to engage with actors beyond the -research to help spread awareness and knowledge and to explore the -wider societal implications of the proposed work; if relevant set out -synergies with education at all levels. - -(No recommended length ? depends on the number of such other - issues which the project involves). +Women are chronically (and increasingly) underrepresented in the computer +field; particularly among designers of software and products. -:DELETE:END +Studies[1][2] have shown several factors involved in this gender gap, among +them: -Gender Issues ----------------- + - Lack of experience with computers leading to avoidance of CS as a field of study or employment. + - Interest in "computing for a purpose" rather than "programming for programming sake" + - Focus on usability and usefulness + +Pypy addresses these concerns in the following ways: + + Allowing the creation of mobile devices which are easily + programmed will increase women's successful experiences with + computers, thus increasing their comfort level and likelihood of + pursuing education and careers in computers. The ease of + creating programs due to Pypy's simple but powerful language will + allow women to incorporate programming in pursuit of their + interests. The user-friendly, interactive interfaces available + will attract more women into programming and designing software. + + As more women bring their viewpoints to the design-process, + better products in terms of meeting the needs of a broader number + of people will be created and increase the appeal of the products + among women, which in turn will encourage women to use and + familiarize themselves with the new technologies. + + Furthermore, the increase in economic and educational + opportunities afforded in the CS fields must not be + ignored. Studies have shown that, while women who do enter CS + enter with less experience, they demonstrate no less ability than + their male counterparts. By breaking down the barriers to entry + noted above, Pypy will help lessen the gender gap, + technologically, socially and economically. + +As an example of the benificial effects that Python already has on +introducing women to the field of programming, the Georgia Institute +of Technology teaches a course for non-Computer Science majors which +focuses on media, rather than the traditional math-oriented +model. This is the Abstract of the paper[3] describing the course: + + Computing may well become considered an essential part of a + liberal education, but introductory programming courses will not + look like the way that they do today. Current CS1 course are + failing dramatically. We are developing a new course, to be + taught starting in Spring 2003, which uses com- putation for + communication as a guiding principle. Students learn to program + by writing Python programs for manipu- lating sound, images, and + movies. This paper describes the course development and the + tools developed for the course. + +[1] Becoming a computer scientist: a report by the ACM committee on the status of women in computing science. +Authors: Pearl, Amy; Pollack, Martha E.; Riskin, Eve; Thomas, Becky; Wolf, + Elizabeth; Wu, Alice. +Journal: Communications of the ACM, Nov. 1990, v33, n11, p47-58. + +[2] _Unlocking the Clubhouse: Women in Computing_ +Allan Fisher and Jane Margolis, PIs +School of Computer Science +Carnegie Mellon University +MIT Press, 2002, ISBN 0262133989. -FIXME write this +[3] http://coweb.cc.gatech.edu/mediaComp-plan/uploads/37/ITICSE-mediacomp2.pdf Safety Issues ---------------- -FIXME write this - -Conservation Regulations --------------------------- - -FIXME write this +Nobody who uses a computer can avoid noticing how viruses, unsolicited +email and computer attacks have made life difficult for computer +users. While Pypy is unable to solve such problems, it may mitigate +them. There are 3 factors that affect this: + +1. The ease of writing Python programs give the developers more time + to consider security implications. + +2. Python as a language has built in checks against buffer overflows + and other classic problems that make traditional languages like C + and C++ prone to attacks. By improving Python performance, a larger + set of programs will be immune to such exploits. + +3. Pypy provides the tools for adding specialised security features to + the language, in the form of new Object Spaces. This allows + applications where security is paramount to add checks and + partitioning that will significantly strengthen the defenses. As + far as we know, no other language has this feature. Other Policy related Issues ----------------------------- -FIXME write this +We have not identified any other policy related issues. + Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 16:22:24 2003 @@ -188,7 +188,7 @@ B7.0_other_issues Needs writing. -NOT STARTED +CORRECTED jacob project_planning.xml Needs general agreement before we copy info to B6.7* files. From lac at codespeak.net Sat Oct 11 16:40:46 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 16:40:46 +0200 (MEST) Subject: [pypy-svn] rev 1723 - pypy/trunk/doc/funding Message-ID: <20031011144046.3DAAC5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 16:40:45 2003 New Revision: 1723 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: Add Bea on disemmination Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 16:40:45 2003 @@ -311,5 +311,53 @@ Dissemination ------------- +To succesfully disseminate knowledge from the PyPy project the project +needs to have good steadfast routines for documenting and interacting with +the project. The project management team (project manager and +assisting project manager) will be responsible for overseeing +dissemination tasks and activities. + +Dissemination will consist of, but not be limited to + +-- The key activities in the project and the development process are the + "Sprints". These are open forums to which we actively invite members from + both commercial and research oriented organisations to actively + participate + +-- since PyPy as a project has goal of a high transparancy (see B5) + documentation and information as well as contact with project members + will be easy to reach for external interested potential stakeholders + +-- the PyPyproject will on a regular basis, during sprints, evaluate and + gather knowledge about the process development and the develoment + process and results. Every sixth months the project will go through a + project review workshop in which specific emphasis will be put on + knowledge trawling and dissemination strategies + +-- a PyPy newsletter will be produced for external organisations/commercial + enterprises that will be sent out after each "sprint", keeping them + updated on project process and development progress. The assistant + project manager will be responsible for this. + +FIXME coordinate with Alex on this. The commercial activities need to + be divided into 'techie' 'financial' and 'other' and WP 10 is about + making these things. So Project Management can see that it is done, + but can only help in making the stuff. + +-- to ensure that interested external parties will be able to use knowledge + aquired in the PyPyproject we will host two workshops during the + project, one after 6 months and the first review workshop and one at the + end of the project in which we actively work with interested parties to + analyze potential usage of PyPy process and prototype + +We will also partake in the following official events, forum, conferences +to spread information about the ongoing project, its unique process and +technological impact: + +FIXME: ADD MORE conferences + +EuroPython, OSCON, PyCon, FOSDEM (free and open source +developer European meeting) + Exploitation ------------ \ No newline at end of file From lac at codespeak.net Sat Oct 11 17:27:45 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 17:27:45 +0200 (MEST) Subject: [pypy-svn] rev 1724 - pypy/trunk/doc/funding Message-ID: <20031011152745.01D7D5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 17:27:45 2003 New Revision: 1724 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: stopping for meeting. also bea wants to put in stuff for innovation related activities. I am not sure it should go here or in 5. We will see. Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 17:27:45 2003 @@ -141,8 +141,8 @@ in distinguishing "accidental" from "designed-in" characteristics. (FIXME: I sent Guido mail asking for something quotable. We will see -if he replies. -- He did. He will say whatever we like. What should -we say?) + if he replies. -- He did. He will say whatever we like, more or less. + What should we ask him to say?) In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design @@ -223,6 +223,28 @@ you, then Python is currently not a very good language choice. A faster Python would have more appeal. +Strategic Impact of Open Source +------------------------------- + +FIXME -- I just made up this heading. It needs to be a second +level heading under strategic ... or maybe gone altogether. +Open source has now reached an installed application base sufficient to +become widely recognised as a viable business standard, especially in +Europe. This has no doubt been aided by the proprietary alternatives being +intellectual properties of large USA based companies and the growing +awareness of the benefits that open source can provide. The European Union, +compromising of heterogeneous distinct regions with different availability +of economic resources, is well positioned to take advantage of the open +source momentum. One reason that open source is becoming so appealing is due +to its equal suitability for projects based on diverse capital budgets. + +Python is an open source, easy to learn, easy to use, programming language +that is readily accessible to a broad user base ranging from education +establishments through to large commercial enterprises. This project aims at +building upon the inherent nature of Python to ensure its longevity in the +commercial and research marketplace. This will maximise the return of the +existing and future capital investment in this technology and ensure Python +becomes one of the most cost effective technology platforms available. Potential Impact on the Balance of Trade ======================================== @@ -244,7 +266,7 @@ one. In 2002, Microsoft announced that it would no longer be supporting Visual Basic 6.0 after the year 2005. All Visual Basic Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft +Microsoft's new .NET framework. Before that, in 2001, Microsoft immediately stopped supporting its Visual J++ language, meant to be a direct competitor with Java, after settling a lawsuit with Sun Microsystems. No migration path was specified. Microsoft is making @@ -255,20 +277,21 @@ world. Java and Visual Basic, ranked 1 and 2, are closed source proprietary American products. The number one reason that is cited by Java users as to 'why they don't use Python' is that it is too slow. -PyPy will fix this. Right now the Visual Basic users have a terrible -dilemma. Microsoft, in its wisdom, has decided end support of their -current platform, Visual Basic 6.0. After the year 2005, they will -have to move to Microsoft's .NET. This is a tremendous opportunity -for us. They're angry as anything now, and tempted to move, not to -.NET, but to an Open Source language, just so that they can have -control over their own destiny and indicate their displeasure with -Microsoft at the same time. +PyPy will fix this. The Visual Basic programmers are in a more +interesting position. Microsoft, in its wisdom, has decided end +support of their current platform, Visual Basic 6.0. After the year +2005, they will have to move to Microsoft's .NET. This is a +tremendous opportunity for us. They're angry as anything now, and +tempted to move, not to .NET, but to an Open Source language, just so +that they can have control over their own destiny and indicate their +displeasure with Microsoft at the same time. Every Java and VB user that switches to Python does not pay license fees to Sun or Microsoft and helps the European balance of Trade. Of course, all the PBF members are predicting that an improved -Python will improve their sales, both domestic and foreign. +Python will improve their sales, both domestic and foreign, which +can only improve the trade balance. European Dimension ++++++++++++++++++ @@ -302,15 +325,19 @@ Innovation Related Activities ----------------------------- -Management Of Knowledge Produced --------------------------------- - -Protection of Intellectual Property ------------------------------------ +This is an Open Source Project. Thus complicated issues involving +intellectual property simply do not arise. The knowledge produced +by this project, every deliverable, is listed at Dissemination level +Public. We are utterly committed to transparency and open dissemination, +and as such will have all of our code available for nightly downloads, +our papers freely available on the PyPy websites, and freely available +for other people to link to. All Consortium members will have signed +a consortium agreement, asserting that all code will be released +under the MIT Open Source License, approved by both the Open Source +Initiative and the Free Software Foundation. Dissemination ------------- - To succesfully disseminate knowledge from the PyPy project the project needs to have good steadfast routines for documenting and interacting with the project. The project management team (project manager and From jacob at codespeak.net Sat Oct 11 17:32:06 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sat, 11 Oct 2003 17:32:06 +0200 (MEST) Subject: [pypy-svn] rev 1725 - pypy/trunk/doc/funding Message-ID: <20031011153206.5DD375A40B@thoth.codespeak.net> Author: jacob Date: Sat Oct 11 17:32:05 2003 New Revision: 1725 Added: pypy/trunk/doc/funding/project_planning_sums.py Log: Littel tool for making sums in project_planning.xml Added: pypy/trunk/doc/funding/project_planning_sums.py ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/project_planning_sums.py Sat Oct 11 17:32:05 2003 @@ -0,0 +1,51 @@ +import re + +f = file('project_planning.xml', 'r') + +task = re.compile(r'^ Author: lac Date: Sat Oct 11 18:03:07 2003 New Revision: 1726 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: removed MIT license to put in section 3. Deleted boilerplate. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Sat Oct 11 18:03:07 2003 @@ -1,11 +1,5 @@ -:DELETE:BEGIN - - B 5.0 Project Management - -:DELETE:END - Project Management -====================== +================== PyPy as a project will be implementing an agile development lifecycle.This choice of development method will have effects on the @@ -84,12 +78,6 @@ On the following pages we will describe in more detail how this choice of method will influence the way this project will be managed. -:DELETE:BEGIN - -B 5.1 Project manager - -:DELETE:END - Project Manager ------------------ @@ -250,14 +238,8 @@ management, communication, conflictresolving) for Learning Tree International since 2000 in both Sweden and USA. -:DELETE:BEGIN - -B 5.2 Management structure - -:DELETE:END - Management structure -------------------------- +-------------------- The management structure will be as follows: @@ -312,21 +294,15 @@ Since the PyPy project is implementing agile/Open Source methods -("sprints") the goal is to have a proactive team of developers and project +("Sprints") the goal is to have a proactive team of developers and project managers. This means that the project will be ruled by one primary management strategy - to delegate as much responsibility to the developer team and the persons responsible for each individual workpackage. This rule _will_ guide all planning and decisionmaking in the two boards. -:DELETE:BEGIN - -B 5.3 Coordinator - -:DELETE:END - Coordinator ------------------ +----------- The project coordinator in the PyPy project is: @@ -348,14 +324,8 @@ The project coordinator will be able to use the project management team for support in the tasks mentioned above. -:DELETE:BEGIN - -B 5.4 Project meetings - -:DELETE:END - Project Meetings ------------------------ +---------------- Management Board will meet at the start of the project and two times per year or on an ad hoc basis as requested. The meetings will @@ -369,7 +339,7 @@ in the internal project web. Team Meetings -+++++++++++++++++++ ++++++++++++++ The project team will meet at the "sprints" which take place on a six week cycle ( se below). During the sprints, there will be time @@ -398,17 +368,17 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Key to PyPy's technical development and research are so called -"sprints". These publically announced one-week meetings serve as an +"Sprints". These publically announced one-week meetings serve as an intense working forum to rapidly discuss and implement key PyPy ideas with agile methodologies and take place on a six week cycle. -The goals for each "sprint" will be decided by the development team +The goals for each "Sprint" will be decided by the development team in cooperation with the project management team. The project manager is responsible for the handling of logistics before, during and after the sprints (invite, location, preparation etc). Agenda and discussions/decisions on these sprints will be documented and put up in the internal project web. -During the "sprints", developers usually pair up and write +During the "Sprints", developers usually pair up and write unit-tests to test the to-be-implemented features before actually adding them. The unittest-first approach helps to understand the planned feature. Additionally, the discussion in a pair makes sure @@ -464,14 +434,8 @@ individual contribution help enforce high-quality program code and good design decisions. -:DELETE:BEGIN - -B 5.5 Quality control of technical development - -:DELETE:END - Quality control of technical development ----------------------------------------------- +---------------------------------------- The PyPy project will ensure quality by a variety of means. On the grand scale, the involvement of excellent researchers ensures that the @@ -507,7 +471,7 @@ standards. Additional Quality procedures -++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++ The project manager will circulate a draft Quality Management plan for the project prior to first Project Meeting and and then present it for @@ -528,14 +492,8 @@ - Evaluation routines - Specific responsibilities within the project -:DELETE:BEGIN - -B 5.6 Communication and reporting - -:DELETE:END - Communication and reporting ---------------------------------- +--------------------------- The project process will be reported as follows: @@ -586,7 +544,8 @@ We will present multiple reports and scientific papers on major conferences such as EuroPython (Python's european community -conference), OSCON (Open Source Convention), PyCon (python developer +conference), FOSDEM (Free and Open Source Developer European Meeting), +OSCON (Open Source Convention), PyCon (python developer conference) and to domain specific audiences such as embedded device developers.In a later phase of the project the PEP (Python Enhancement Proposals) procedures may be implemented. This is the standard @@ -595,15 +554,9 @@ proposed Enhancement and provides an rationale. However, such a formal method will only by required when the project reaches the point where users begin to rely on aspects of our implementation. - -:DELETE:BEGIN - -B 5.7 Consortium - -:DELETE:END Consortium ----------------- +---------- The consortium consists of the following members: @@ -620,46 +573,18 @@ (FIXME: Alastair - something we should mention here about the agreement?) -:DELETE:BEGIN - -B 5.8 Ip - -:DELETE:END - Management of Knowledge and Intellectual Property -------------------------------------------------- Every contributor is fully responsible for not introducing program code which might infringe third party copyright or patents for that matter. Every contributor agrees to license his contributions under a MIT-style -license (approved by the Open Source Initiative):: - - The MIT License - - Copyright (c) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. +license approved by the Open Source Initiative and the Free Software +Foundation. See section 3. The public availability of PyPy's source code at all times on the basis on such an open and commercially exploitable license stipulates exchange -of ideas, contribution to the project and reusing all parts of PyPy from +of ideas, contribution to the project and reusability all parts of PyPy from the start. In return, this provides the developers with fast feedback and From lac at codespeak.net Sat Oct 11 18:11:25 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 18:11:25 +0200 (MEST) Subject: [pypy-svn] rev 1727 - pypy/trunk/doc/funding Message-ID: <20031011161125.9F35A5A40B@thoth.codespeak.net> Author: lac Date: Sat Oct 11 18:11:24 2003 New Revision: 1727 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: Add stuff about Intellectual Property Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 18:11:24 2003 @@ -334,7 +334,48 @@ for other people to link to. All Consortium members will have signed a consortium agreement, asserting that all code will be released under the MIT Open Source License, approved by both the Open Source -Initiative and the Free Software Foundation. +Initiative and the Free Software Foundation. The MIT license is here. + +:: + + The MIT License + + Copyright (c) + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +Now you know why we selected it. It fits on less than half a page, and +lets anybody do whatever they like with the software. This does tend +to eliminate any contraversy, since there are no clauses that can be +interpreted in varying fashions. + +Management of this intellectual property consists of sticking a note on +your website, or wherever you keep your sources, and periodically running +a program, especially before software releases, that sticks an ugly +copy of the license at the top of every file that you release. + +The only other intellectual property which we will produce are +scientific papers, talks, and the like. They will all be freely +available. Copyright shall rest in the authors, unless somebody +gives a paper to one of the scientific journals that keeps all +copyright to itself. In either case, no management is necessary. Dissemination ------------- From nico at codespeak.net Sat Oct 11 18:46:34 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Sat, 11 Oct 2003 18:46:34 +0200 (MEST) Subject: [pypy-svn] rev 1728 - pypy/trunk/doc/funding Message-ID: <20031011164634.A13025A40B@thoth.codespeak.net> Author: nico Date: Sat Oct 11 18:46:33 2003 New Revision: 1728 Added: pypy/trunk/doc/funding/makefile Log: useful to remake gantt chart and budget_summary Added: pypy/trunk/doc/funding/makefile ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/makefile Sat Oct 11 18:46:33 2003 @@ -0,0 +1,11 @@ +all: budget_summary.html project_gantt.png + +clean: + rm -f budget_summary.html budget_summary.xml budget_summary.txt project_gantt.png + +budget_summary.html: project_planning.xml nico/p2total.xsl nico/bt.py + xsltproc nico/p2total.xsl project_planning.xml | python nico/bt.py > budget_summary.html + +project_gantt.png: project_planning.xml project_resources.xml + pygantt --timestep 56 --display-resources --renderer png --detail 0 --colors-file pyganttrc project_planning.xml > project_gantt.png + From hpk at codespeak.net Sat Oct 11 19:13:14 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 11 Oct 2003 19:13:14 +0200 (MEST) Subject: [pypy-svn] rev 1729 - pypy/trunk/doc/funding Message-ID: <20031011171314.816AB5A40B@thoth.codespeak.net> Author: hpk Date: Sat Oct 11 19:13:13 2003 New Revision: 1729 Added: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: a new revision of the "Relevance to the Objectives of the IST Priority" chapter as asked for by Jacob and Laura. I didn't erase the old files yet. Please note that there still is (apart from incorporating your criticism :-) the following part where i can't write anything about: - Links and Complimentary with Other Programmes this has a fixme for Armin, Nico, Alastair and Bea to describe their other EU projects. I think this is important. The next one might already be in my text but not under this headline. (- Contribution to Community Social Objectives) Added: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sat Oct 11 19:13:13 2003 @@ -0,0 +1,181 @@ +Relevance to the Objectives of the IST Priority +----------------------------------------------- + +Supporting Participation +++++++++++++++++++++++++ + +The PyPy project will connect expert researchers, programmers +and users at all levels at all times. On the social level we will explore +and refine new cooperative ways of researching and implementing advanced +highly involved technologies. Building on the large communication network of +opensource programmers we will explore and refine agile methodologies. +We believe that our new **fluid networked way of rapid software development +presents a new paradigm how people can work together**. + +This is an efficient countermeasure to the perceived european "weak culture +of tranferring and exploiting university research results" (SWOT table from +'IST Advisory Group: Software technologies, embedded systems and distributed +systems: A European strategy towards an Ambient Intelligent environment'). + +Python as a language "for everybody" +++++++++++++++++++++++++++++++++++++ + +The european industry as well as many developers are not interested in yet another +new language. Instead our project will produce an extremely flexible and performant +development platform around the Python programming language. Much anecdotal, +and some empirical, evidence suggests that Python is one of the easiest programming +languages to learn and is one of the languages in which one can code up a given +algorithm the fastest. For these reasons, it is **particularly popular +among those people whose main competence lies beyond computer science +and for whom programming is a secondary activity**, that is to say almost +everyone in the information industry. Using Python itself to develop an +innovative Python implementation will allow many people to understand the platform +and reuse it in their context. Understanding, teaching and adapting our +Python implementation will be much easier than almost any other language +implementation. + + +A development platform suited for tommorow's european industry +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +The EU is interested in **software technologies that are reliable, +pervasive, interoperable and can be adapted to accommodate new +applications and services**. This exactly the focus of our project. +With some unique approaches to building a highly performant +and productive development platform we will further innovation +and interoperability. + +We will build an extensible Python implementation that can be adapted +and configured for almost all runtime environments. It will go far beyond +the state of the Art in computer languages, and produce a runtime system +which is much better suited for the development and deployment of networked, +embedded, and mobile devices than any existing language available today. +In doing so it will be compliant with the Python language specification +requiring no re-training for the tens of thousands of European Python +programmers. To dramatically expand the scope of an already very +productive development environment can only have a positive effect on +European competitiveness. + + +PyPy builds on the most successful language designed in europe +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Python is the most widely used European-designed computer language. +Its development started in 1990, at CWI, Centrum voor Wiskunde en +Informatica, the National Research Institute for Mathematics and +Computer Science in the Netherlands, it will strenghten our leadership +in the area of innovative language design, and increase world-wide +awareness of this fact. With funding from the EU we can bring some +key python developers to europe. + +We believe that PyPy presents a **unique opportunity to bring +considerable market- und mind share with respect to development +tools and environments back to europe**. The many individuals and +companies involved with the project are deeply entagled with the +opensource community and businesses. Python and PyPy in particular +provide a viable alternative to American closed source language +monopolies, while increasing innovation and competitiveness in European +businesses and industry and thus contributing to the greater well-being +of all European citizens. + +Working with the strong opensource community to overcome the +european weakness with development platforms obviously builds on the +strategies as outlined in the SWOT-analysis by the IST workgroup. + + +solving 'trust and confidence' problems ++++++++++++++++++++++++++++++++++++++++ + +The IST thematic priority will contribute directly to realising +European policies for the knowledge society as agreed at the Lisbon +Council of 2000, the Stockholm Council of 2001, the Seville Council of +2002, and as reflected in the e-Europe Action Plan. + +A main target of IST in FP6 is:: + + solving 'trust and confidence' problems so as to improve + dependability of technologies, infrastructures and applications. + +PyPy will contribute to this goal because it is build on the strength +of the opensource community. Open Source programs are more widely trusted +than proprietary alternatives because they are more transparent, accessible +and customizable. Especially in large opensource projects all parts of +the program are under permanent scrutiny of many interested developer. +Because we are deeply connected to the large python communities we are +confident that PyPy can take full advantage of this open culture. + +Moreover, Python is an extremely readable language. Readability was and +remains one of its main design goals. This makes maintaining Python programs +substatially easier than similar program in less readable languages. It is the +maintainability of computer programs which most directly effects their +actual and perceived reliability and encourages intelligent usage. + +In our view development platforms should not be proprietary but should +**empower the user** to get involved and provide appropriate extensions +suiting commercial and research needs. Thus rather than 'trusting the +manufacturer because you have no choice' you can 'trust yourself'. +This second form of trust is far more durable and useful. + + +Stengthening social cohesion +++++++++++++++++++++++++++++ + +Social cohesion is strengthened when technological advances are no +longer the exclusive domain of a technological or commercial elite, +but readily accessible by all members of society. The best way to +achieve such a goal is to have the participation of all members of +society in the design and implementation of new technological advances. +In the field of software, this means more than simply providing programs +which are easy to use -- it also means providing languages which are +easier for people for whom programming is a secondary activity. + +- enabling sustainable growth and improving competitiveness both of + large and small businesses as well as the efficiency and transparency + of governments. + +Governments have been embracing Open Source for some time now. +To the extent that they will demand programs developed in an +Open Source Language, for reasons of transparency, reliability, and +national security they will benefit from the existence of PyPy as an +Open Source language choice. + +Participation of SME's in high-level research ++++++++++++++++++++++++++++++++++++++++++++++ + +The consortium includes the Python Business Forum, an international trade +association of SMEs who develop using the Python programming language. +Since SMEs are the main engines for innovation, growth, and competitiveness +in the IT sector, by supporting these SMEs, and improving the language they +use to develop one can directly have a positive effect on competitiveness. +Moreover, syngeries can be developed between the SMEs and academia, and SME +and large industrial players. Disseminating knowledge to these SMEs is a +primary goal of this proposal, and a major focus of our efforts. They are +poised to fully exploit the new language implementation because they will be +among its developers, and beneficiaries of a focussed effort in +knowledge dissemination. + + +Links and Complimentary with Other Programmes ++++++++++++++++++++++++++++++++++++++++++++++++++ +FIXME_ARMIN FIXME_NICO FIXME_ALASTAIR FIXME_BEA +Talk about your projects. + +Contribution to Community Social Objectives ++++++++++++++++++++++++++++++++++++++++++++++++ + +FIXME_LAURA ask Michel + +Contributiuon to EC Policies +++++++++++++++++++++++++++++++++ + +There will be transfer of knowledge from research to industry through +the participation of software developing SMEs. Thus the SMEs in the +project will benefit from the cutting-edge, high level research results. +Since the SMEs are in a hurry to commercialise products which use this +research, the academics will see that their research is not wasted -- +locked into tiny languages which have little effect outside of the +academic community. A specialising Just in Time Compiler for Python, +designed for the use of networked and embedded systems will have +immediate effect in reinforcing European dominance in this demanding +competitive field, and thus contribute to the employment of people +in desirable jobs in a rapidly growing field. From lac at codespeak.net Sat Oct 11 19:31:01 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 19:31:01 +0200 (MEST) Subject: [pypy-svn] rev 1730 - pypy/trunk/doc/funding Message-ID: <20031011173101.7C42B5AD0D@thoth.codespeak.net> Author: lac Date: Sat Oct 11 19:31:00 2003 New Revision: 1730 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: Trying to save soem nice prose that got taken out of everywhere. Maybe I will remove it all next checkin. Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 19:31:00 2003 @@ -38,76 +38,7 @@ produce a version of the language which, being superior to anything which has gone before, will be extremely well used. To that end, our first target group is the existing community of Python/Jython programmers. - -It is always difficult to measure how many people are using a -programming language, but of course, we try. Python is generally -ranked the sixth most popular computer language in the world. Only -Java, Visual Basic, C, C++, and Perl are believed to have more users. - -The Python FAQ, available at the python language home site of -python.org says:: - - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. - -Googling for 'python programming' gives 1,540,000 hits. ('Python' gives -ten million, but many of those Pythons are the actual reptiles.) - -Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', -and in some niches, languages such as PHP, Perl and SQL are popular, -but Python is vastly bigger than the more obscure languages such -as Haskell, OCaml, Smalltalk, ADA, Ruby etc. - -Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are the -'bleeding edge' developers, who were interested in the new release of -Python first made available at the end of August. At the other end of -the spectrum, there are many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version -of Python that came installed with their machine when they bought it. - -For what its worth, there are about 600,000 http visitors a month to -python.org. About one third of them are using the documentation, -which is a fairly good indicator that they are trying to use the -language. Number of unique IP addresses per month is about 350,000 at -this point, and has been rising steadily from about 250,000 this time -last year. - -Converting this into an actual estimate of number of users is a bit -hard, since: - -1) One user may use multiple machines (e.g. home & work & cafe) -2) Many sites use a firewall that hides the actual IP (and thus combines - multiple users into one) -3) Not all Python users go to python.org every month (or at least not - the Documentation page), because they have already dowloaded the - documentation for local browsing. - -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books *Learning Python*, -*Python in a Nutshell* and *The Python Cookbook* are to be considered -relevant. Speaking of books, sales statistics of *The Essential -Jython* targetted at users of the Python version that compiles to -the Java Virtual Machine indicate that there are at least 10 thousand -Jython users worldwide. - -For comparison, there are something like 12 million programmers -world-wide and roughly 50% of those use Visual Basic (according to -International Data Corp). In March 2002, Borland said Java had about -1.5 million developers. - -That's a lot of users. Writing the language which they all use will -have an enormous impact. +See the section on Exploitation where this is discussed at length. Contributions to Standards ========================== @@ -424,8 +355,131 @@ FIXME: ADD MORE conferences -EuroPython, OSCON, PyCon, FOSDEM (free and open source -developer European meeting) +EuroPython, OSCON, PyCon, FOSDEM (Free and Open Source +Developer European Meeting) Exploitation ------------- \ No newline at end of file +------------ + +Our first goal in exploitation will be to make Python the reference +language. Our market, there , are all existing Python programmers. +Just how many are there? + +It is always difficult to measure how many people are using a +programming language, but of course, we try. Python is generally +ranked the sixth most popular computer language in the world. Only +Java, Visual Basic, C, C++, and Perl are believed to have more users. + +The Python FAQ, available at the python language home site of +python.org says:: + + 2.1. How many people are using Python? + + Certainly thousands, and quite probably tens of thousands of users. + More are seeing the light each day. The comp.lang.python newsgroup is + very active, but overall there is no accurate estimate of the number + of subscribers or Python users. Jacek Artymiak has created a Python + Users Counter; you can see the current count by visiting + http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py + + Jacek's counter has more than 43 000 registered users. + +Googling for 'python programming' gives 1,540,000 hits. ('Python' gives +ten million, but many of those Pythons are the actual reptiles.) + +Compared to the most common languages these days, C, C++, Java and +Visual Basic, there is certainly much less 'market penetration', +and in some niches, languages such as PHP, Perl and SQL are popular, +but Python is vastly bigger than the more obscure languages such +as Haskell, OCaml, Smalltalk, ADA, Ruby etc. + +Some statistics from python.org may be relevant. There were 47,751 +Python 2.3 downloads in the first 10 days of September. These are the +'bleeding edge' developers, who were interested in the new release of +Python first made available at the end of August. At the other end of +the spectrum, there are many more who simply wait for Python to become +available as a Red Hat, or Debian package, or simply use the version +of Python that came installed with their machine when they bought it. + +For what its worth, there are about 600,000 http visitors a month to +python.org. About one third of them are using the documentation, +which is a fairly good indicator that they are trying to use the +language. Number of unique IP addresses per month is about 350,000 at +this point, and has been rising steadily from about 250,000 this time +last year. + +Converting this into an actual estimate of number of users is a bit +hard, since: + +1) One user may use multiple machines (e.g. home & work & cafe) +2) Many sites use a firewall that hides the actual IP (and thus combines + multiple users into one) +3) Not all Python users go to python.org every month (or at least not + the Documentation page), because they have already downloaded the + documentation for local browsing. + +It's probably reasonably safe to say there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if +O'Reilly's sales statistics for their popular books *Learning Python*, +*Python in a Nutshell* and *The Python Cookbook* are to be considered +relevant. Speaking of books, sales statistics of *The Essential +Jython* targetted at users of the Python version that compiles to +the Java Virtual Machine indicate that there are at least 10 thousand +Jython users worldwide. + +For comparison, there are something like 12 million programmers +world-wide and roughly 50% of those use Visual Basic (according to +International Data Corp). In March 2002, Borland said Java had about +1.5 million developers. + +That's a lot of Python users. Writing the language which they all use +will have an enormous impact. + +Beyond there are the users of other languages. +How do we go about getting them to use PyPy? + +First of all, we must give them something that they find useful, and +useful enough to switch. + + The current State-of-the-Art, both in + Python and in Computer Languages in general does not best + serve the new needs of the creators of embedded, networked and + distributed software sectors. They need a more flexible + language which is easier to reduce to its 'bare-bones' for + embedding, and which can dynamically reconfigure itself and + optimise execution speed at the interpreter level. + Consequently, the PyPy project is a collaboration between + academic researchers and SME software and service + providers. The former have the skill and vision to produce a + new run-time language architecture for the twenty-first + century and the latter wish to deploy PyPy in their innovative + new business ventures. The results of the PyPy project are + also expected to be taken-up by established industrial users. + We have expressions of interest from Bang and Olufsen, the + Danish manufacturer of high-end stereo equipment, Vodaphone + the mobile industrialist, Siemens, the German conglomorate, + and Axis the Swedish-based multinational market leader in + in-house developed chip technology for network video and print + servers. + + The project will go through three phases. In the first phase, + we will build a complete State-of-the-Art PyPy Interpreter. By + this we mean not only that PyPy will be perfectly compliant + with the language behavior of the existing Python language, + but also that it will be a State-Of-the-Art Very High Level + Object-Oriented Language. At this point the language is + expected to be very flexible, but also very slow. + + In the second phase, we will develop a high-performance PyPy + that addresses our modern needs. This PyPy will transcend the + State-of-the-Art -- it will be an innovative language best + suited for mobile, networked, and distributed + computing. Moreover, this will fix a longstanding complaint of + the estimated 175,000 Python programmers worldwide. Python + programs are faster to *develop* than programs in C, C++ or + Java, its main competition. But they *run* much slower. This + need not be. + + In a final third phase, we will validate the previous results by + implementing several applications using the high-performance PyPy + interpreter. From hpk at codespeak.net Sat Oct 11 19:39:07 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 11 Oct 2003 19:39:07 +0200 (MEST) Subject: [pypy-svn] rev 1731 - pypy/trunk/doc/funding Message-ID: <20031011173907.8E1E95A2EF@thoth.codespeak.net> Author: hpk Date: Sat Oct 11 19:39:06 2003 New Revision: 1731 Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B7.0_other_issues.txt Log: fixed some small ReST issues Modified: pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- pypy/trunk/doc/funding/B4.4_quality_SMEs.txt (original) +++ pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Sat Oct 11 19:39:06 2003 @@ -49,10 +49,9 @@ With 12 full time and 6 part time employees, Strakt is an SME representative. -FIXME: Where does Alex go? PBF? -+++++++++++++++++++++++++++++++ -Alex Martelli -+++++++++++++ +Alex Martelli (FIXME: Where does Alex go? PBF?) ++++++++++++++++++++++++++++++++++++++++++++++++ + Being a prolific writer and popular speaker as well as a Python programmer, Alex is uniquely suited for widely disseminating the progress and the results of the project. Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Sat Oct 11 19:39:06 2003 @@ -26,8 +26,8 @@ them: - Lack of experience with computers leading to avoidance of CS as a field of study or employment. - - Interest in "computing for a purpose" rather than "programming for programming sake" - - Focus on usability and usefulness + - Interest in "computing for a purpose" rather than "programming for programming sake" + - Focus on usability and usefulness Pypy addresses these concerns in the following ways: @@ -71,11 +71,10 @@ tools developed for the course. [1] Becoming a computer scientist: a report by the ACM committee on the status of women in computing science. -Authors: Pearl, Amy; Pollack, Martha E.; Riskin, Eve; Thomas, Becky; Wolf, - Elizabeth; Wu, Alice. +Authors: Pearl, Amy; Pollack, Martha E.; Riskin, Eve; Thomas, Becky; Wolf, Elizabeth; Wu, Alice. Journal: Communications of the ACM, Nov. 1990, v33, n11, p47-58. -[2] _Unlocking the Clubhouse: Women in Computing_ +[2] Unlocking the Clubhouse: Women in Computing Allan Fisher and Jane Margolis, PIs School of Computer Science Carnegie Mellon University From lac at codespeak.net Sat Oct 11 19:54:43 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sat, 11 Oct 2003 19:54:43 +0200 (MEST) Subject: [pypy-svn] rev 1732 - pypy/trunk/doc/funding Message-ID: <20031011175443.0D6B55A2EF@thoth.codespeak.net> Author: lac Date: Sat Oct 11 19:54:43 2003 New Revision: 1732 Added: pypy/trunk/doc/funding/obsoleteB1 (props changed) - copied unchanged from rev 1720, pypy/trunk/doc/funding/B1._obj_from_badB2.txt Removed: pypy/trunk/doc/funding/B1._obj_from_badB2.txt pypy/trunk/doc/funding/moreedu.save Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt pypy/trunk/doc/funding/TODO Log: remove gorp and make minors typo changes to holger's IST Deleted: /pypy/trunk/doc/funding/B1._obj_from_badB2.txt ============================================================================== --- /pypy/trunk/doc/funding/B1._obj_from_badB2.txt Sat Oct 11 19:54:43 2003 +++ (empty file) @@ -1,161 +0,0 @@ -THIS FILE IS NOT USED. - ------------------------------------------------------------------------ - -Laura: This is the stuff I wrote for B2. It belongs in B1, if at all. -I sort of like how I made the PyPy objective match the Call objective. -That might be good to clip for B1. - ---------------------------------------------------------------- - - -B.2 Relevance to the objectives of the IST Priority - -Describe the manner in which the proposed project's goals address the -scientific, technical, wider societal and policy objectives of the IST -Priority in the areas concerned. - -(Recommended length ? three pages) - - -PyPy is a precise match for IST-2002-2.3.2.3 - Open development -platforms for software and services. Its stated objective is as -follows: - - To build open development and run-time environments for software - and services providing the next generation of methodologies, - interoperable middleware and tools to support developers - through - all phases of the software life-cycle, from requirements analysis - until deployment and maintenance - in the production of networked - and distributed software systems and services, embedded software - and value-added user services. This will enable the development of - future software engineering methods and tools. - -The PyPy project aims to build a flexible and fast implementation of -the Open Source programming language Python written in itself. Python -is a Very High Level Language, a modern tool for developing software. -While Python is already suitable for developing software of all sizes, -this new implementation of Python would be particularly suitable for -the development of networked, distributed software systems, and -embedded software. It will facilitate the development of future -software engineering methods and tools. - -Priority is to be given to projects in which - - 'strong industrial users join forces with software and service - suppliers in building common platforms with support of - academic research partners'. - -This project is a collaboration between academic researchers, and -software and service providers to produce an outcome desired by all -industrial users. ASK_STOCKHOLM 'what's an Industrial User?' Is AB -Strakt one? Large companies, who are not software providers, such as -Bang and Bang & Olufsen, the Danish maker of high-end audio equipment, -http://www.bang-olufsen.com/ have expressed interest in using PyPy -once it is developed. - -Moreover, our project is relevant to every focus objective. - -Focus is on: - - a) High level methods and concepts (esp. at requirements and - architectural level) for system design, development and - integration, addressing non-functional aspects, complexity, - autonomy and composability. - -PyPy will advance the 'state-of-the-art' in high level -implementation of languages, introducing high level methods -and concepts in the domain, producing a development environment -and methods with as-yet-unmatched flexibility, -with a new architecture for object libraries that provide for radical -improvements in (the management of) complexity, autonomy -(self-hosting), and composability (seamless modularity). - -ASK_STOCKHOLM DO I HAVE TO EXPLAIN THIS MORE? - - b) Open and modular development environments, enabling - flexibility and extensibility with new or sector-specific - tools (e.g. intelligent distributed decision support), - supporting different adaptable development processes and - methodologies and ensuring consistency and traceability - across the development lifecycle. - -Flexibility is one of the primary goals of PyPy. Our new architecture -will be the basis of a host of more flexible and extensible ways to -create software products. PyPy will, of course, be released as -Free/Open Source software, under the MIT license. - -FOOTNOTE: Stick MIT License in here. - -ASK_STOCKHOLM -- Am I correct? They want the thing we made to be Open -and Modular? Or are they asking that our own way of working uses Open -and Modular techniques? We do this as well .... - - c) Light/agile methodologies and adaptive workflow - providing a dynamic and adaptive environment, suitable - for co-operative and distributed development. - -Each member of the group is committed to Agile Methodologies. Some of -us have experience with Crystal and others with XP, [FIXME add URLS -and see if we have any more trained people on the team XXX nico: Logilab -teaches XP] two of the more -popular ones. Moreover, since we have been active for many years in -the Open Source community, we are already used to co-operating with -others in a distributed development process. - -ASK_STOCKHOLM -- is this what they want, or more like this? - -AB Strakt is a young Swedish software company whose main product, CAPS -is an adaptive workflow framework. A faster Python would seamlessly -improve this product, and those applications which are based upon it. - -[FIXME: if we want this bit, we want to refer to the AB Strakt - Appendix, that says that we are a cool company, and that we do - workflow and procurement, and that we are responsible -- blah blah - blah. I'll boast about Strakt later, or see if I can steal some - boasts from marketing.] - - d) Open platforms, middleware and languages supporting - standards for interoperability, composability and - integration. (incl. e.g. P2P, GRID, autonomy, agents, - dynamic adaptability and evolvability, context - awareness, customer profiles). Open source middleware - layers can facilitate rapid and broad adoption. - -PyPy is an Open Language. ASK_STOCKHOLM. So they have just asked us -to make them a language? Or they just want us to use a language to -make what we are making? [XXX nico: Logilab is making agent software -and would very much like to use pypy for that] - - In addition, related foundational research, to be implemented - by Specific Targeted Research Projects and Coordination - Actions, should focus on fundamental design concepts, - systematisation of domain specifications, concurrency, - distribution and timing, formal and quantitative analysis and - testing tools, and future database and information system - concepts. - -ASK_STOCKHOLM PyPy is Applied Research. When they say 'foundational -research' do they want 'foundational applied research', in which case -we can all cheer and say, here we are with a STREP, new foundational -research in the field of specializing compilers, just what you asked -for? Or by 'foundational research' do they mean the sort of basic -research that has no direct applications, but goes under the heading -'it is nice to learn stuff'? - - FIXME - Emphasis "quantitative analysis" as per WP06 and WP07 where we - describe PyPy as a research and comparison platform - - Work should where appropriate, enhance and complement work - implemented under EUREKA/ITEA and in software initiatives at - member and associated state level. The IST programme will seek - active co-operation with ITEA in software intensive systems. - -ASK_STOCKHOLM I don't know how to find out which work implemented -under EUREKA/ITEA was implemented using Python. I do know of 2 prior -IST projects. ASWAD: http://wwww.aswad-project.org. -A faster Python will enhance -any project done in Python. Also, if this means that EUREKA/ITEA has -more pots of money that they would like to hand us, we'd love to take -it. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sat Oct 11 19:54:43 2003 @@ -137,7 +137,7 @@ To the extent that they will demand programs developed in an Open Source Language, for reasons of transparency, reliability, and national security they will benefit from the existence of PyPy as an -Open Source language choice. +Open Source language choice. FIXME BEA wants to put in an appendix that fits Participation of SME's in high-level research +++++++++++++++++++++++++++++++++++++++++++++ @@ -161,12 +161,12 @@ Talk about your projects. Contribution to Community Social Objectives -+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++ FIXME_LAURA ask Michel Contributiuon to EC Policies -++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++ There will be transfer of knowledge from research to industry through the participation of software developing SMEs. Thus the SMEs in the Modified: pypy/trunk/doc/funding/TODO ============================================================================== --- pypy/trunk/doc/funding/TODO (original) +++ pypy/trunk/doc/funding/TODO Sat Oct 11 19:54:43 2003 @@ -3,7 +3,7 @@ * deal with files tagged with FIXME_YOUR_NAME -* Laura has to deal with ASK_STOCKHOLM tags +* Laura has to deal with ASK_STOCKHOLM tags -- done, Laura. * Christian has to add missing FIXME_YOUR_NAME tags in B6.7* and reaorganize all the B6.7 files (create missing and rename existing) Deleted: /pypy/trunk/doc/funding/moreedu.save ============================================================================== --- /pypy/trunk/doc/funding/moreedu.save Sat Oct 11 19:54:43 2003 +++ (empty file) @@ -1,203 +0,0 @@ -FIXME_LAURA: finish writing - -FIXME_NICO FIXME_ALASTAIR : proof-read - -:DELETE:BEGIN - -B.3 Potential impact - -Describe the strategic impact of the proposed project, for example in -reinforcing competitiveness or on solving societal problems. Describe -the innovation-related activities. Describe the exploitation and/or -dissemination plans which are foreseen to ensure use of the project -results. Describe the added-value in carrying out the work at a -European level. Indicate what account is taken of other national or -international research activities. - -(Recommended length ? three pages) - -:DELETE:END - -Potential Impact on the Industrial and Research Sectors -======================================================= - -The particular improvements we intend to make to Python will have an -immediate direct effect on Eropean competitiveness. What is more, the -planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -The makers of mobile and networked devices, as well as computer game -designers in the Massively-Multi-Player games industry have long -desired a language that could automatically balance loads, or that -allowed massive parallelism through microthreads. They too will get -what they desire. - -Moreover, a great many companies, in deciding what language to develop -in, reject Very High Level Languages, despite their known advantages -for programmer productivity, code-reuse and maintainability because -the code produced simply does not run fast enough. If we give them a -*fast* VHLL, they will switch. - -Furthermore, one of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -The second threat closed source makes to European competitiveness is -more insidious, and more long term. A good workman knows his tools. -This is much more than the theoretical knowledge of how his tools -ought to work, according to principles learned in school. The way car -mechanics know how cars work is distinctly different from what you -would know if you had attended classes on 'the principles of the -internal combustion engine', let alone what you need to know to just -drive the thing. - -Right now, in Europe, we don't have enough of the software equivalents -of car-mechanics. And most of them live in academia, where they know -the intimate details of languages that never get used in industrial -applications. The world needs Formula-One race car mechanics, indeed, -but it has a much greater need for people who know how to repair the -family car. - -It is not as if there is a shortage of people who would be interested -in learning such things, if the source were made available. Many -people have taken this step by learning how CPython does its stuff. -But still there is a barrier. If you want to know how CPython does -things, you need to learn C. C is a notoriously difficult language to -learn. - -But let me quote from an article posted to the Python-in-Education -mailing list. - -FIXME -- I promised Arthur I would fix any typos:: - - Date: Sun, 14 Sep 2003 11:52:05 -0400 - From: Arthur - To: edu-sig at python.org - Subject: [Edu-sig] re : If the PyPy Project ... - - List-Id: Python in education - - Terry - - - >Since I presume the goal of PyPy is to implement *Python* in Python, - >wouldn't the implementation language be rather insignificant to an - >end-user such as an educator? Why would it be "better" than CPython? - - For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some - time in the complex realm with PyGeo - a simple version of the complex - realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. - - Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue - are to be dealt with. Not that I got there, yet - but I did seem to have an - avenue to explore I would not have with CPython - as someone who doesn't C, - and has no intention of trying, seriously, to do so. - - As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It - will make Python, I believe, a more attractive educational language, because - it will make someone with a strong foundation in Python - as the language of - choice - a more self-sufficient programmer. - - Presumably - the point is - there will be less cases where the right - approach would be an extension module in C or C++, and a sense of - fundamental compromise should one not be equipped to go there. Many - thousands of folks - using VB and the like - already do involved, - highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put - Python more squarely in that "space". - - Is any of this so, or just hope? - - Art - - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - -Here is somebody who is hoping we can give him a language he can -understand. Python already is an excellent teaching language. PyPy -will be a better one. - -This project has to be done at the European or the International -level. That's where we all live. - -Since education is a primary goal of the project, we will take every -opportunity to disseminate PyPy. The source will always be freely -available from our website. We will continue to give talks about PyPy -at EuroPython, Python-UK, OSCON (the International Open Source -Conference) the International Python Conference, and others. ADD SOME GOOD ONES THAT ARE FOR CSC ACADEMICS - - How about OOPSLA (Conference on Object-Oriented Programming, -Systems, Languages, and Applications), ECOOP (European Conference -on Object-Oriented Programming), the MIT Lightweight Languages -Workshops and the like as the next target? - -ASK STOCKHOLM -- will the EU pay for us to go to conferences? even -ones we were going to attend anyway? - -These talks will create interest as well as teach techniques. We will -submit a PEP and push to get PyPy made the reference implementation of -the Python programming language(*). We will continue to discuss PyPy on -our own mailing lists, as well as other Python mailing lists such as -the Python-in-Education list, and the Usenet Newsgroup -comp.lang.python. We already have an IRC channel, #pypy on -irc.freenode.net where live online discussions happen, and where we -communicate with each other while we are apart. Beyond that -- we are -willing to take any actions the EU would like to fund. - -:: - - FIXME - (*) emphasis on this one? If this really happens we'll arguably - become the software European Project with the largest distribution - and user base ever (XXX rephrase :-) - Also mention that the issue (and the word 'PEP') is discussed - later in B3.1_standards.txt? - -Ask Stockholm We think you get no money for this in a STREP. True? - -ASK STOCKHOLM -- -can we get some money to give Freenode? -re: 'Indicate what account is taken of other national or international -research activities.' -- Samuele and Armin read the literature all -the time. What do I say? -ppppppppppppppp \ No newline at end of file From nico at codespeak.net Sat Oct 11 19:57:57 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Sat, 11 Oct 2003 19:57:57 +0200 (MEST) Subject: [pypy-svn] rev 1733 - pypy/trunk/doc/funding Message-ID: <20031011175757.0808D5A2EF@thoth.codespeak.net> Author: nico Date: Sat Oct 11 19:57:57 2003 New Revision: 1733 Added: pypy/trunk/doc/funding/JaH_project_plan.xml Modified: pypy/trunk/doc/funding/project_resources.xml Log: Jacob's version Added: pypy/trunk/doc/funding/JaH_project_plan.xml ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/JaH_project_plan.xml Sat Oct 11 19:57:57 2003 @@ -0,0 +1,156 @@ + + + + + + + + +24 +2004/01/01 + + + + + + + + +24 +2004/01/01 + + + + + +24 +2004/01/01 + + + + + + + + +9 +2004/01/01 + + + + + + + + + + + +9 +2004/01/01 + + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + + + +9 + + + + + + + + + +ph1 + + + +15 + + + + + + +9 + + + + + + +15 + + + + + + +6 +wp7 +wp8 + + + + + + + + +6 +wp7 +wp8 + + + + + + + + +24 +2004/01/01 + + + + + + + Modified: pypy/trunk/doc/funding/project_resources.xml ============================================================================== --- pypy/trunk/doc/funding/project_resources.xml (original) +++ pypy/trunk/doc/funding/project_resources.xml Sat Oct 11 19:57:57 2003 @@ -32,10 +32,16 @@ + + + + + + \ No newline at end of file From nico at codespeak.net Sat Oct 11 20:06:59 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Sat, 11 Oct 2003 20:06:59 +0200 (MEST) Subject: [pypy-svn] rev 1734 - pypy/trunk/doc/funding Message-ID: <20031011180659.8E8F05A2EF@thoth.codespeak.net> Author: nico Date: Sat Oct 11 20:06:58 2003 New Revision: 1734 Modified: pypy/trunk/doc/funding/project_gantt.png Log: updated. Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From hpk at codespeak.net Sat Oct 11 21:04:56 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 11 Oct 2003 21:04:56 +0200 (MEST) Subject: [pypy-svn] rev 1735 - pypy/trunk/doc/funding Message-ID: <20031011190456.BDE865A2EF@thoth.codespeak.net> Author: hpk Date: Sat Oct 11 21:04:55 2003 New Revision: 1735 Added: pypy/trunk/doc/funding/B2.0.0_new_relevance.asc (props changed) - copied unchanged from rev 1734, pypy/trunk/doc/funding/B2.0.0_new_relevance.txt pypy/trunk/doc/funding/b2.asc - copied unchanged from rev 1734, pypy/trunk/doc/funding/b2.txt Removed: pypy/trunk/doc/funding/B2.0.0_new_relevance.txt pypy/trunk/doc/funding/b2.txt Modified: pypy/trunk/doc/funding/FIXME Log: renamed old files to *.asc to have them accessible but not disrupting Christian's generation of PDF. Deleted: /pypy/trunk/doc/funding/B2.0.0_new_relevance.txt ============================================================================== --- /pypy/trunk/doc/funding/B2.0.0_new_relevance.txt Sat Oct 11 21:04:55 2003 +++ (empty file) @@ -1,210 +0,0 @@ -FIXME_LAURA: proof-read this, insert new direction SWOT job -:DELETE:BEGIN -FIXME_LAURA: proof-read this - -Relevance to the Objectives of the IST Priority --------------------------------------------------- - -The PyPy project will build a flexible, modular, context-aware -implementation of the Open Source programming language Python. In -doing so it will take advantage of the known European strengths in -formal methods and languages outlined in the June 2002 report: 'IST -Advisory Group Software Technologies, Embedded Systems and Distributed -Systems: A European strategy towards an Ambient Intelligent -Environment'. It will go beyond the state of the Art in computer -languages, and produce a runtime system which is much better suited -for the development and deployment of networked, embedded, and mobile -devices than any existing language available today. In doing so -it will adhere to the syntax of the popular programming language, thus -requiring no re-training for the tens of thousands of European Python -programmers. To improve an existing programming language with the -explicit goals of making it more suitable for European industry can -only have a positive effect on European competitiveness. - -Because PyPy will be released as Open Source, it will contribute -towards the goals of openness and trust. Python is the most -widely used European-designed computer language. Its development -started in 1990, at CWI, Centrum voor Wiskunde en Informatica, the -National Research Institute for Mathematics and Computer Science in -the Netherlands, it will strenghten our leadership in the area of -innovative language design, and increase world-wide awareness of this -fact. - -Thus PyPy is position to be at the heart of the knowledge economy and -provide a viable alternative to American closed source language -monopolies, while increasing innovation and competitiveness in -European businesses and industry and to contributing to the greater -well-being of all European citizens. - - - -:DELETE:END - -Relevance to the Objectives of the IST Priority --------------------------------------------------- - -The IST thematic priority will contribute directly to realising -European policies for the knowledge society as agreed at the Lisbon -Council of 2000, the Stockholm Council of 2001, the Seville Council of -2002, and as reflected in the e-Europe Action Plan. - - The main targets of IST in FP6 are - - - solving 'trust and confidence' problems so as to improve - dependability of technologies, infrastructures and applications. - -PyPy can contribute to this goal because it is an Open Source -language. Open Source programs are more widely trusted than -proprietary alternatives because they are transparent. Any person -having any doubts or questions about the technology can simply read -the code and find out what it does, unlike with a closed-source -language where one can only hope it does what you want. Moreover, -Python is an extremely readable language. Readability was one of its -design goals. This makes maintaining Python programs substatially -easier than similar program in less readable languages. It is the -maintainability of computer programs which most directly effects their -actual and perceived reliability. - -Moreover, there is a significant risk in relying on proprietary -closed source programs. Should one have any problem with the program, -you are completely dependent upon the programs manufacturer to fix -it. But the manufacturer will only fix it if it is in his commercial -interest to do so. The authors of this proposal who live in Sweden -are extremely tired of using software which believes that one can -live without the last three letters of the Swedish alphabet :XXX. -When the source is freely available, then should the manufacturer -not believe your problems to be worth his while, you can always -change things yourself, or hire somebody else to do so. Thus rather -than 'trusting the manufacturer because you have no choice' you -can 'trust yourself to always be able to fix it should it go wrong'. -This second form of trust is far more durable and useful. - - - strengthening social cohesion by providing efficient, - intelligent and easy to use systems. - -Social cohesion is strengthened when technological advances are no -longer the exclusive domain of a technological elite, but readily -accessible by all members of society. The best way to achieve such a -goal is to have the participation of all members of society in the -design and implementation of new technological advances. They will -prevent our future devices from arriving with user interfaces that -present a 'nerds only' barrier. In the field of software, this means -more than simply providing programs which are easy to use -- it -also means providing languages which are easier for non-programmers -to learn. - -Python's development started in 1990, at Centrum voor Wiskunde en -Informatica (CWI), the National Research Institute for Mathematics and -Computer Science in the Netherlands. It built on the lessons learned -in designing ABC. Both of these languages are explicitly designed to -be easier for non-programmers and non-technical people to learn. Python -has been extremely successful in such goals, see XXX CP4E, especially -among women. Python is widely used as a first programming language. -We will explore this further in section 7, but for here suffice it -to say that Python meets such goals as much as is possible for a -computer language. - -Again, the simple benefit of being able to type your name correctly, -when it contains letters outside of the English 26, provides a sense -of belonging -- or perhaps it is only that when you cannot type your -name you feel excluded, unappreciated, or unwanted. - - - enabling sustainable growth and improving competitiveness both of - large and small businesses as well as the efficiency and transparency - of governments. - -Governments have been embracing Open Source in recent times in a big -way. To the extent that they will demand programs developed in an -Open Source Language, for reasons of transparency, reliability, and -national security they will benefit from the existence of PyPy as an -Open Source language choice. - -Moreover, the PyPy Consortium includes the Python Business Forum, an -international trade association of SMEs who develop using the Python -programming language. Since SMEs are the main engines for innovation, -growth, and competitiveness in the IT sector, by supporting these -SMEs, and improving the language they use to develop one can directly -have a positive effect on competitiveness. Moreover, syngeries can be -developed between the SMEs and academia, and SME and large industrial -players. Disseminating knowledge to these SMEs is a primary goal of -this proposal, and a major focus of our efforts. They are poised to -fully exploit the new language implementation because they will be -among its developers, and beneficiaries of a focussed effort in -knowledge dissemination. - -Thirdly, a Consortium member in this proposal is the Swedish SME AB -Strakt, whose new product, *CAPS Upphandling*, is a full-featured, -transparent, government procurement system promoting the efficiency of -government throughout the tender process. AB Strakt is interested in -PyPy in large part because it will improve its commercial offering. -The governments and large businesses which are its primary market will -thus benefit indirectly from an improved Python. - - - harnessing the computing and knowledge management resources - across Europe and bringing them to the desktop of any - researcher, engineer or other end user. - -Open source standards increase interoperability, which make such -resources easier to share. FIXME_ALASTAIR Now talk about Semantic Web - -Again, quoting from the IST workprogramme, this requires progress in -three main technology building blocks: - -ena - pushing the limits of miniaturisation and minimising the costs - and power consumption of microelectronic components and - micro-systems. - -Smaller systems need software developed in languages that have a -small footprint. PyPy will be there. - - - developing mobile, wireless, optical and broadband communication - infrastructures as well as software and computing technologies - that are reliable, pervasive, interoperable and can be adapted - to accommodate new applications and services. Europe's strengths - both in communication technologies and in embedded software and - systems provide a clear opportunity to lead and contribute to - the development of the next generation of products and - services. The development of open standards and open source - software will be encouraged when appropriate to ensure - interoperability of solutions and to further innovation. - -This is PyPy in a nutshell. An Open Source language that is explicitly -designed for the next generation of products and services. FIXME_SAMUELE -quote from the work package??? - -- Developing user friendly interfaces which are intuitive, can - interpret all our senses such as speech, vision and touch and - that understand our gestures and various languages. This should - be coupled with more powerful and flexible knowledge - technologies that are semantic-based and context-aware. They - should prepare for the next generation Web and make access to, - and creation of digital content more effective and more - creative. - -FIXME_ALASTAIR SEmantic web, -FIXME_NICO Narval? where does constraint programming go? - -Links and Complimentary with Other Programmes -+++++++++++++++++++++++++++++++++++++++++++++++++ -FIXME_ARMIN FIXME_NICO FIXME_ALASTAIR FIXME_BEA -Talk about your projects. - -Contribution to Community Social Objectives -+++++++++++++++++++++++++++++++++++++++++++++++ - -FIXME_LAURA ask Michel - -Contributiuon to EC Policies -++++++++++++++++++++++++++++++++ - -There will be transfer of knowledge from research to industry through -the participation of software developing SMEs. Thus the SMEs in the -project will benefit from the cutting-edge, high level research results. -Since the SMEs are in a hurry to commercialise products which use this -research, the academics will see that their research is not wasted -- -locked into tiny languages which have little effect outside of the -academic community. A specialising Just in Time Compiler for Python, -designed for the use of networked and embedded systems will have -immediate effect in reinforcing European dominance in this demanding -competitive field, and thus contribute to the employment of people -in desirable jobs in a rapidly growing field. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sat Oct 11 21:04:55 2003 @@ -38,10 +38,10 @@ NOT STARTED B2.0.0_new_relevance -2 sections to write +1 section to write Fix fixmes Modify text? Make decision. -STARTED: holger +READY FOR REVIEW: holger B3.0_impact Remove garbage Deleted: /pypy/trunk/doc/funding/b2.txt ============================================================================== --- /pypy/trunk/doc/funding/b2.txt Sat Oct 11 21:04:55 2003 +++ (empty file) @@ -1,192 +0,0 @@ -First look at the SWOT table from 'IST Advisory Group: Software technologies, -embedded systems and distributed systems: A European strategy towards an -Ambient Intelligent environment' - - -This table describes the situation nicely. However, it falls short of -having a strategy for addressing the problem presented. We have one. - -Our intent is to use the strength in the Open Source Software development -community (7) and some strong SMEs (8) to combat the Threat of US players -dominating in development platforms(1). In doing so our principal goal -will be to overcome Weakness (1) -- Inadequate Structure and Weak Culture -for transferring and exploiting university research results, fragmentation -of academic efforts. That's the weakness we are most familiar with, and -the one we believe we know how to fix. - -To put it another way, 'Why is that so much of our research effort -comes to nothing? Why do the Americans, and not us, take our research -to market? What exactly is it that goes wrong somewhere between making the -prototype and making the successful company?' - -The answer, we believe, is an inadequate understanding of what it takes -to become successful. In Europe there is a crucial blindness as to -what it takes to be successful in the marketplace. Technological -superiority we have oodles of. It's in the marketplace where we fail. -And this is in large part because people in Europe still believe that -good technology sells itself. This is almost never the case. - -The Americans know that. This is their big secret. And nobody knows this -better than the Open Source movement. We routinely create programs that -are much better than those that are commercially available. And then -what? Nothing, mostly. This problem in European competitiveness is -our problem as well. - -Over time we have learned, the hard way, that being technologically -excellent is the easy part of the job. Getting to market is the hard -part of the job. We believe tthat the European Commission understands -this problem very well. We do not, however, believe that the EC knows -how to solve it. Searching over proposals, we found very few Open -Source ones. This is unsurprising. Perhaps without intending it, -the EC has made participation by Open Source companies more difficult -that it needs to. - -From our outsider's perspective, we see that the EC thinks that it should -plough money into some hopeful line of research, and group some large -industries with some academics, in the hope that the large industries -will use the research in some of their current projects. There is -some sincere effort to get SMEs involved, but almost exclusively as -consumers of research. Small manufacturers, in particular, seem to -be the 'ideal SME' that the EC envisioned when crafting its plan. - -We would like the opportunity to show you an alternative way to attack -the problem, one that comes from the Open Source and Agile Programming -world. - -First of all, you must start with some SME entrepreneurs and some -professional educators or communicators. They are essential to your -eventual success, and they need to be on board even before you begin -your first technical expedition. This is because the first thing to -do is to start with a marketing/educating effort. You need to do this -in order to attract the best people to your project. This is a common -problem in the Open Source world. Some businesses have embraced -Open Source, primarily out of greed. They hope to have other people -develop their software, for free, thus saving them the cost of hiring -developers. They 'hang up a shingle' -- in other words make a -web page, and make a few announcements, and then sit back astonished -when nobody comes. In the Open Source world, it is not the case that -'if you build it, they will come'. There are companies who do -succeed at this. - -The PyPy development team did things differently. We first decided to -make a prototype. This has taken us most of the year 2003, because we -have only been able to do this on our vacations -- about 5 weeks -total. We did this for 2 reasons. The first is that we were quite -aware that we were going to ask you for money to enable us to work -full time creating something useful that had never been done before. -It would be embarassing and shameful to then fail, because we asked to -do something that could not be done. A prototype would allow us to -test our novel concept of Object Spaces. If they did not work, then -our whole idea was unsound. - -Moreover, this would give us the time to greatly publicise our project, -and attract the best people to it. We happen to be some of the biggest -fish in the Python-World Pond, but we made sure that we invited others, -including Guido van Rossum, the biggest fish of all to our development -Sprints. We worked on our process ensuring that we could work together, -and that no unexpected personality clashes or conflicts would derail -the project. We went to conference, after conference, after conference -and gave papers and informal talks about what we intended to do. We -made our own website, set up some mailing lists, and discussed things -not only there, but in the 'python in education' mailing list, the -'marketing python' (this one is about increasing the market share of -Python) mailing list, in the Python developer's list, and in the -newsgroup comp.lang.python. We hung out on our own internet relay -chat line on irc.freenode.net and answered questions of whoever -dropped by. We held open Sprints, and let anybody who was interested -participate. - -We made an enormous splash. We are now an extremely high profile -open source project. We are being watched. If we fail, we will do -it quite publically. - -Why, you might ask, would we go to all that trouble? Because, unlike -some projects you know, where 'getting the EU funding' is all that -really matters, and what you do to get it, is secondary -- we find the -EU funding only a means to our goal. This is because our goal is -multi-facetted. - -First of all there is the straight-forward technical goal. We want to -make an extremely novel specialising compiler for the Python programming -language. This goal is technically quite formidable, and requires -sophisticated expertise. - -Second of all, those of us who write software using Python hope that -our software will itself be improved. This is a commercial interest -for the PBF, a large stakeholder. - -Third of all, there is the marketing goal. We want to make Python -the most used language on the planet. And that is a much harder goal. -We had to successfully attract the best people to the project, without -causing a crisis that would 'fork the project' -- producing 2 hostile -camps who each point at each other saying 'Mine's the real Python'. -When we are done making PyPy we want to immediately capture the -existing user baser of 175,000. <-- should we make an appendix of how -we calculate that? And then we want to go after those Visual Basic, -Java, and C++ programmers out there. Python is currently ranked only -the sixth most popular language on the planet. We would like to become -number one. - -And fourth of all, we want to be the reference project for future -collaboration between the Open Source and the Agile programming -communities, and the EU. We think that both groups need each other. -The EU, in its statement clearly recognises the fact. But it seems, -to us, unsure how to do this. And there are significant risks which -the EU seems to want to take with one hand, while want to prevent -with its other. - -For instance, it is not enough to merely have some SMEs involved, in -some small token way. That will only marginalise them. You will lose -the very ones you want to attract, those with true entrepreeurial -spirit, and keep those who are only after a safe and satisfactory life -at the government trough. If you would like your project adequately -disseminated, you must involve the SMEs all through the project. - -But this is hard to achieve. The smallest SMEs cannot afford to -dedicate a full person to the project, and will find the paperwork -crushing. The project cannot afford to rely on a key player who could -be bought or go bankrupt or become too overworked to contribute at any -moment of time. What then? There is, of course, a solution. If SMEs -banded together, and shared resources, they could function like a -large company. This has worked successfully for Swedish farmers, and -we believed it could work well for software companies as well. With -large enough numbers, you can spread the risk around. While at any -time any PBF member could be in a state of transition, they won't all -be, and somebody equivalent could be found to take the place of -somebody who was temporarily unavailable. - -This, however, is only possible if great effort is taken at all times to -keep the process open and transparent. There must be no secrets. You -cannot get a replacement on a dime unless you are constantly educating -your larger community. Otherwise, getting up to speed would take too -long and the project would fail. Aside from the usual web pages, -conferences, irc channels, and mailing lists, you must make targetted -FIXME BEA what do you call them? And host open Sprints, keep your -source open and availabel for download at all times, and use a -process based FIXME BEA is this correct? Agile development model that -is robust in the possibility of change. - -This is hard. This is very hard. It requires trust, and courage, and -the sort of Egoless programming which is trained, not read about. It is -what the EC has claimed it wants, but which it has not fostered. - -Thus, from our point of view, we see our relevance to the IST program -as 2-fold. First of all we are going to give you the AmbiIntelligent -FIXME_LAURA correct jargon?development platform for networked and -mobile devices that you believe is essential to European competitivness. - -But what we also intend to do is to deliver a model of how you can -actually get the Open Source community to work with you -- and, of -course while we deliver the OS community to you, we are also going to -deliver you to them -- we are going to take special effort to document -and publicise _you_ to _them_. We are going to teach 'how to crack -the system and get the EU to pay for you to develop marvels without -demanding that you lose your soul'. Because, when it comes down to it, -that is what the OS community wants most. A chance to make a difference, -change the world, and make it a better place. - -If you accept this proposal, and our way of software development, we -will only be the first in a long line of successful Open Source projects -that produce the marvels you ask for. And we will stick around and -teach anybody who comes by exactly how we did it. - From sanxiyn at codespeak.net Sat Oct 11 21:07:58 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 21:07:58 +0200 (MEST) Subject: [pypy-svn] rev 1736 - pypy/trunk/src/pypy/translator/test Message-ID: <20031011190758.B8B4E5A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 21:07:58 2003 New Revision: 1736 Modified: pypy/trunk/src/pypy/translator/test/buildcl.py Log: Fixed problem that buildcl-ed function couldn't be called multiple times. Modified: pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/test/buildcl.py Sat Oct 11 21:07:58 2003 @@ -14,20 +14,17 @@ fun = FlowObjSpace().build_flow(func) gen = GenCL(fun) out = gen.emitcode() - fp = path.join("test.lisp") - i = 0 + i = 1 + fp = path.join("test%d.lisp" % i) while fp.exists(): fp = path.join("test%d.lisp" % i) i += 1 - fp.write(out) - fname = fp.path def _(*args): - fp = file(fname, "a") + fp.write(out) print >>fp, "(write (", fun.functionname, for arg in args: - print >>fp, str(arg), + print >>fp, gen.conv(arg), print >>fp, "))" - fp.close() output = exec_cmd("%s %s" % (cl, fname)) return readlisp(output) return _ From sanxiyn at codespeak.net Sat Oct 11 21:20:53 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 21:20:53 +0200 (MEST) Subject: [pypy-svn] rev 1737 - pypy/trunk/src/pypy/translator/test Message-ID: <20031011192053.3E4D95A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 21:20:52 2003 New Revision: 1737 Modified: pypy/trunk/src/pypy/translator/test/buildcl.py Log: Sorry. Last checkin was not quite correct. Modified: pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/test/buildcl.py Sat Oct 11 21:20:52 2003 @@ -15,16 +15,18 @@ gen = GenCL(fun) out = gen.emitcode() i = 1 - fp = path.join("test%d.lisp" % i) - while fp.exists(): - fp = path.join("test%d.lisp" % i) + fpath = path.join("test%d.lisp" % i) + while fpath.exists(): + fpath = path.join("test%d.lisp" % i) i += 1 def _(*args): - fp.write(out) + fpath.write(out) + fp = file(str(fpath), "a") print >>fp, "(write (", fun.functionname, for arg in args: print >>fp, gen.conv(arg), print >>fp, "))" - output = exec_cmd("%s %s" % (cl, fname)) + fp.close() + output = exec_cmd("%s %s" % (cl, str(fpath))) return readlisp(output) return _ From sanxiyn at codespeak.net Sat Oct 11 21:22:30 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 21:22:30 +0200 (MEST) Subject: [pypy-svn] rev 1738 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031011192230.E6E015A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 21:22:30 2003 New Revision: 1738 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: Integrated annotator. Proper truth testing. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sat Oct 11 21:22:30 2003 @@ -1,5 +1,6 @@ import autopath from pypy.translator.flowmodel import * +from pypy.translator.annotation import Annotator class Op: def __init__(self, gen, op): @@ -28,20 +29,31 @@ def __init__(self, fun): self.fun = fun self.blockref = {} + self.annotate([]) + def annotate(self, input_arg_types): + ann = Annotator(self.fun) + ann.build_types(input_arg_types) + ann.simplify() + self.ann = ann def str(self, obj): if isinstance(obj, Variable): return obj.pseudoname elif isinstance(obj, Constant): return self.conv(obj.value) else: - return "#<" # unreadable + return "#<" def conv(self, val): if val is None: return "nil" + elif isinstance(val, bool): # should precedes int + if val: + return "t" + else: + return "nil" elif isinstance(val, int): return str(val) else: - return "#<" # unreadable + return "#<" def emitcode(self): import sys from cStringIO import StringIO @@ -69,6 +81,7 @@ print "(go", "tag" + str(tag), ")" print ")" # close tagbody return + self.cur_block = block print "tag" + str(tag) for op in block.operations: emit_op = Op(self, op) @@ -88,7 +101,7 @@ if branch.target.has_renaming: source = branch.args target = branch.target.input_args - print "(psetq", # parallel assignment + print "(psetq", # parallel assignment for item in zip(source, target): init, var = map(self.str, item) print var, init, @@ -104,5 +117,20 @@ retval = self.str(branch.returnvalue) print "(return", retval, ")" def emit_truth_test(self, obj): - # XXX: Fix this - print "(not (zerop", self.str(obj), "))" + annset = self.ann.annotated[self.cur_block] + tp = annset.get_type(obj) + s = self.str + if tp is bool: + print s(obj) + elif tp is int: + print "(not (zerop", s(obj), "))" + else: + print self.template(s(obj), [ + "(typecase %", + "(boolean %)", + "(fixnum (not (zerop %)))", + ")"]) + def template(self, sub, seq): + def _(x): + return x.replace("%", sub) + return "\n".join(map(_, seq)) Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 11 21:22:30 2003 @@ -14,6 +14,17 @@ raise test.TestSkip #___________________________________ + def if_then_else(cond, x, y): + if cond: + return x + else: + return y + def test_if(self): + cl_if = make_cl_func(self.if_then_else, self.cl, udir) + self.assertEquals(cl_if(True, 50, 100), 50) + self.assertEquals(cl_if(False, 50, 100), 100) + + #___________________________________ def my_gcd(a, b): r = a % b while r: From sanxiyn at codespeak.net Sat Oct 11 21:34:51 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 21:34:51 +0200 (MEST) Subject: [pypy-svn] rev 1739 - pypy/trunk/src/pypy/translator/test Message-ID: <20031011193451.3A8675A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 21:34:50 2003 New Revision: 1739 Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: one more test Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 11 21:34:50 2003 @@ -19,10 +19,14 @@ return x else: return y - def test_if(self): + def test_if_bool(self): cl_if = make_cl_func(self.if_then_else, self.cl, udir) self.assertEquals(cl_if(True, 50, 100), 50) self.assertEquals(cl_if(False, 50, 100), 100) + def test_if_int(self): + cl_if = make_cl_func(self.if_then_else, self.cl, udir) + self.assertEquals(cl_if(0, 50, 100), 100) + self.assertEquals(cl_if(1, 50, 100), 50) #___________________________________ def my_gcd(a, b): From sanxiyn at codespeak.net Sat Oct 11 21:42:01 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 21:42:01 +0200 (MEST) Subject: [pypy-svn] rev 1740 - pypy/trunk/src/pypy/translator Message-ID: <20031011194201.CD9C95ACFB@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 21:42:00 2003 New Revision: 1740 Modified: pypy/trunk/src/pypy/translator/translator.py Log: translator.py: annotate() support for cl() Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sat Oct 11 21:42:00 2003 @@ -84,6 +84,8 @@ def cl(self): g = GenCL(self.flowgraph) + if self.annotator: + g.ann = self.annotator return g.emitcode() def compile(self): From tismer at codespeak.net Sat Oct 11 21:48:45 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sat, 11 Oct 2003 21:48:45 +0200 (MEST) Subject: [pypy-svn] rev 1741 - pypy/trunk/doc/funding Message-ID: <20031011194845.492B75A2EF@thoth.codespeak.net> Author: tismer Date: Sat Oct 11 21:48:44 2003 New Revision: 1741 Modified: pypy/trunk/doc/funding/B4.3_participants.txt Log: shortened my CV to be compatible. Reflowed them all, to make a better estimate. Modified: pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- pypy/trunk/doc/funding/B4.3_participants.txt (original) +++ pypy/trunk/doc/funding/B4.3_participants.txt Sat Oct 11 21:48:44 2003 @@ -24,29 +24,26 @@ Description of the participants ---------------------------------- -Jacob Hall?n, 45, comes to his position as co-founder and CTO of -AB Strakt from being a Technical Manager and international standards -expert at the LIBRIS Department of the Royal Library. He was the -LIBRIS representative in the EU funded ONE-2 project. Before this, he -was the CEO of NetGuide Scandinavia AB, one of the first internet -services companies in Sweden. Mr Hall?n has also been a Computer -Science and Programming teacher and an army officer. Throughout his -career he has been managing projects varying from 1200 participant -conventions down to 3 person development projects. He has also done -electronics development and microcontroller programming, winning two -innovation awards in the process. Mr Hall?n is chairman of the Python -Business Forum. - -Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher -at the University of Southampton (UK). He studied Mathematics at the -University of Lausanne and obtained his Ph.D. in Logic and Set Theory at -the Free University of Brussels. He is the main author of several -commercial, open source and research programs and contributed to a number -of them, most notably in the fields of computer graphics and 3D modelling, -education, and programming languages. He recently developed in the Psyco -project novel techniques for efficient interpretation of dynamic programming -languages. He is also a member and contributor of the TUNES Project for a -Free Reflective Computing System. +Jacob Hall?n, 45, comes to his position as co-founder and CTO of AB Strakt from +being a Technical Manager and international standards expert at the LIBRIS +Department of the Royal Library. He was the LIBRIS representative in the EU +funded ONE-2 project. Before this, he was the CEO of NetGuide Scandinavia AB, +one of the first internet services companies in Sweden. Mr Hall?n has also been +a Computer Science and Programming teacher and an army officer. Throughout his +career he has been managing projects varying from 1200 participant conventions +down to 3 person development projects. He has also done electronics development +and microcontroller programming, winning two innovation awards in the process. +Mr Hall?n is chairman of the Python Business Forum. + +Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher at the +University of Southampton (UK). He studied Mathematics at the University of +Lausanne and obtained his Ph.D. in Logic and Set Theory at the Free University +of Brussels. He is the main author of several commercial, open source and +research programs and contributed to a number of them, most notably in the +fields of computer graphics and 3D modelling, education, and programming +languages. He recently developed in the Psyco project novel techniques for +efficient interpretation of dynamic programming languages. He is also a member +and contributor of the TUNES Project for a Free Reflective Computing System. Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead programmer producing games for Electronic Arts. He went to university, gave @@ -55,101 +52,90 @@ large German banks and the chairman of the EU-founded CEN/ISSS workshop who contracted him to prototype integration of OpenSource software. He implemented an opensource transaction service on top of TAO/CORBA and published several -articles about Free projects. In 2001 he joined the Python community, -published an interactive tool, took part in Zope3 development and some of the -first coding Sprints in Europe and became one of the initiators of the -PyPy project. - -Tim Peters: Over 20 years top-tier industrial experience in -programming language implementation and high-performance -computing. 1979-1988, Cray Research: Compiler development, Group -leader--common back-end optimization group. 1988-1994, Kendall Square -Research (KSR), Compiler and Library development, Architecture and FPU -design. 1994-2000, Dragon Systems: Developed core speech recognition -system for portable devices; scalable, large-scale telephone speech -recognition; and award-winning PhoneQuery Toolkit product. 2000 to -present: Zope Corporation: Development--Core technologies underlying -Zope's leading content management framework; Python core. Python: -first port of Python to 64-bit platform (KSR-1); POSIX pthreads -support; algorithmic and optimization expertise; elected Director of -Python Software Foundation (PSF) since its inception. - -Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor -of *Python Cookbook* . ActiveState 2002 "Activators' Choice" -award. PSF member, Python langauge developer, PBF board member. Currently -works for AB Strakt, developing the CAPS framework. Also consults for -other firms on Python and O-O design, teaching, coding, feasibility -studies, interfacing. 1989-2002, Cad.Lab (think3, Inc): innovative -component architecture for web-enabling existing GUI-oriented apps; -Event Manager, interfacing, proprietary protocols. Taught Computer -Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM -Research: 3 Outstanding Technical Achievement awards, voice -recognition, image processing. "Laurea" 1980, Electronic Engineering, -Bologna University, 100/100 magna cum laude. - -Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich -(1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 -he worked as teaching/published research assistant at the Institute of -Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic -programming framework for Java JRGP, becoming involved in Jython (the -industry-strength Java re-implemetation of Python). He is now a main -developer of Jython, working on internals, compilers and Java -integration, and was author of Jython Essentials (O'Reilly, 2002). He -is also involved on the ongoing design of Python. For his -contributions to Python/Jython he has been nominated member of the -PSF. He brings to the project his know-how on languages, -re-implementation/design of Python, reflection, lookup and dispatch -optimization. - -Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer -of the PBF. Studied Physics (csc minor) at the University of Toronto, -and later instructed there in Physics and Computer Science, while -simultaneously working for the Canadian Armed Forces, teaching -programming to non-programmers, and assisting with research in Human -Factors Engineering and Learning Techniques. Moving to the US, she -consulted for software companies and government institutions, taught -Unix, project management, and interpersonal relations, and wrote a -geophysical simulation system. She brings strong connections in -financial and government sectors, and was an Open Source advocate -before the term was coined. Her passions: programming, empowerment of -average citizens, and the Open Society. - -Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in -Sweden. She was recruited into the IT-industry to work as a project -manager for large scale education projects for the company NetGuide -Scandinavia, Gothenburg. Since 1998 she has been working with education -and development project management and management of education and -consultant departements, implementing Open Source strategies and Agile -development methods. Beatrice also teaches project management, leadership -and communication courses for Learning Tree International. - -Anna Ravenscroft: Started programming with Python in 2002, presenting -papers on teaching Python, serving as track chair at EuroPython and OSCON, -writing and technical-editing books and articles. Before 2002, -Instruction Administrator for a public transport company, managing -projects, teaching, developing course material, creating -websites. Earlier, Office Manager for a small training company, -creating and editing training documents and administering the firm's -NT LAN. Up to 1994, Distribution Coordinator for a large Financial -Services company, providing field communications and training for a -sales force of 7500. In the 1980's, served as Psychological Operations -Specialist in the US Army, receiving an Honors Degree in Russian. -Education: Liberal Arts, Univ. of MN. - -Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics -and Informatics at the Free University of Berlin, diploma on Adaptive -Huffman Coding. He has been working for Pharmaceutic Research -companies for more than 10 years, doing statistical evaluations, -EEG and EMG recording, signal analysis, networking, report generation -and automation. In 1985, he wrote his first multitasking system -for DOS, implementing continuous 32 channel EEG recording and visualisation -on a 286 machine. As a free software consultant, Christian developed -Netscape plugins, automated generation of documents from databases, -Web applications with Medusa and later Zope. In 1997, he learned -about Python, founded the Python Starship, and started working on -the Python kernel. He translated various Python books into German, -is the author of the Stackless Python extension, which will now be -merged into the PyPy project, and is one of the founders of the PyPy project. +articles about Free projects. In 2001 he joined the Python community, published +an interactive tool, took part in Zope3 development and some of the first coding +Sprints in Europe and became one of the initiators of the PyPy project. + +Tim Peters: Over 20 years top-tier industrial experience in programming language +implementation and high-performance computing. 1979-1988, Cray Research: +Compiler development, Group leader--common back-end optimization group. 1988- +1994, Kendall Square Research (KSR), Compiler and Library development, +Architecture and FPU design. 1994-2000, Dragon Systems: Developed core speech +recognition system for portable devices; scalable, large-scale telephone speech +recognition; and award-winning PhoneQuery Toolkit product. 2000 to present: +Zope Corporation: Development--Core technologies underlying Zope's leading +content management framework; Python core. Python: first port of Python to 64- +bit platform (KSR-1); POSIX pthreads support; algorithmic and optimization +expertise; elected Director of Python Software Foundation (PSF) since its +inception. + +Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor of +*Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, +Python langauge developer, PBF board member. Currently works for AB Strakt, +developing the CAPS framework. Also consults for other firms on Python and O-O +design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab +(think3, Inc): innovative component architecture for web-enabling existing GUI- +oriented apps; Event Manager, interfacing, proprietary protocols. Taught +Computer Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM +Research: 3 Outstanding Technical Achievement awards, voice recognition, image +processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 +magna cum laude. + +Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His +thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as +teaching/published research assistant at the Institute of Theor. CS of the ETHZ. +He was designer on the state-of-the-art genetic programming framework for Java +JRGP, becoming involved in Jython (the industry-strength Java re-implemetation +of Python). He is now a main developer of Jython, working on internals, +compilers and Java integration, and was author of Jython Essentials (O'Reilly, +2002). He is also involved on the ongoing design of Python. For his +contributions to Python/Jython he has been nominated member of the PSF. He +brings to the project his know-how on languages, re-implementation/design of +Python, reflection, lookup and dispatch optimization. + +Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer of the +PBF. Studied Physics (csc minor) at the University of Toronto, and later +instructed there in Physics and Computer Science, while simultaneously working +for the Canadian Armed Forces, teaching programming to non-programmers, and +assisting with research in Human Factors Engineering and Learning Techniques. +Moving to the US, she consulted for software companies and government +institutions, taught Unix, project management, and interpersonal relations, and +wrote a geophysical simulation system. She brings strong connections in +financial and government sectors, and was an Open Source advocate before the +term was coined. Her passions: programming, empowerment of average citizens, +and the Open Society. + +Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in +Sweden. She was recruited into the IT-industry to work as a project manager for +large scale education projects for the company NetGuide Scandinavia, Gothenburg. +Since 1998 she has been working with education and development project +management and management of education and consultant departements, implementing +Open Source strategies and Agile development methods. Beatrice also teaches +project management, leadership and communication courses for Learning Tree +International. + +Anna Ravenscroft: Started programming with Python in 2002, presenting papers on +teaching Python, serving as track chair at EuroPython and OSCON, writing and +technical-editing books and articles. Before 2002, Instruction Administrator for +a public transport company, managing projects, teaching, developing course +material, creating websites. Earlier, Office Manager for a small training +company, creating and editing training documents and administering the firm's NT +LAN. Up to 1994, Distribution Coordinator for a large Financial Services +company, providing field communications and training for a sales force of 7500. +In the 1980's, served as Psychological Operations Specialist in the US Army, +receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. + +Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics and +Informatics at the Free University of Berlin, diploma on Adaptive Huffman +Coding. He has been working for Pharmaceutic Research companies for more than 10 +years, doing statistical evaluations, EEG and EMG recording, signal analysis, +networking, report generation and automation. He wrote his first multitasking +system in 1985 for DOS, continuous 32 channel EEG recording and visualisation on +a 286 machine. Later, he worked on Netscape plugins, document automation, Web +and database applications. Converted to Python in 1997, founded Python Starship, +became Python core developer. He translates Python books into German, is the +author of the Stackless Python extension to be merged into PyPy, and belongs to +the founders of the PyPy project. Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the Technical University in Berlin. He is going to write his diploma thesis on Pypy From tismer at codespeak.net Sat Oct 11 21:51:50 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sat, 11 Oct 2003 21:51:50 +0200 (MEST) Subject: [pypy-svn] rev 1742 - pypy/trunk/doc/funding Message-ID: <20031011195150.237A45A2EF@thoth.codespeak.net> Author: tismer Date: Sat Oct 11 21:51:49 2003 New Revision: 1742 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: corrected some heading level problems Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sat Oct 11 21:51:49 2003 @@ -3,7 +3,8 @@ FIXME think about where to include Logilab and DFKI references Potential impact -=================== ++++++++++++++++++++ + The successful execution of the PyPy project will deliver a practical usefull implementation of a Very-High-Level, Object-Oriented, Open Source programming language. @@ -72,8 +73,8 @@ in distinguishing "accidental" from "designed-in" characteristics. (FIXME: I sent Guido mail asking for something quotable. We will see - if he replies. -- He did. He will say whatever we like, more or less. - What should we ask him to say?) +if he replies. -- He did. He will say whatever we like, more or less. +What should we ask him to say?) In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design @@ -157,8 +158,6 @@ Strategic Impact of Open Source ------------------------------- -FIXME -- I just made up this heading. It needs to be a second -level heading under strategic ... or maybe gone altogether. Open source has now reached an installed application base sufficient to become widely recognised as a viable business standard, especially in Europe. This has no doubt been aided by the proprietary alternatives being @@ -225,7 +224,7 @@ can only improve the trade balance. European Dimension -++++++++++++++++++ +------------------ PyPy is an extremely high-profile project, as is only right since we intend to capture the estimated 175,000 Python users and make them our @@ -483,3 +482,5 @@ In a final third phase, we will validate the previous results by implementing several applications using the high-performance PyPy interpreter. + + \ No newline at end of file From tismer at codespeak.net Sat Oct 11 21:52:33 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sat, 11 Oct 2003 21:52:33 +0200 (MEST) Subject: [pypy-svn] rev 1743 - pypy/trunk/doc/funding/makedoc Message-ID: <20031011195233.17CB45A2EF@thoth.codespeak.net> Author: tismer Date: Sat Oct 11 21:52:31 2003 New Revision: 1743 Modified: pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: new PDF snapshot as of now Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Sat Oct 11 21:52:31 2003 @@ -9,7 +9,7 @@ def get_file_list(): flis = os.listdir("..") - pat = "[bB][0-9].[0-9]" + pat = "[bB][0-9]\." lis = [] for name in flis: if re.match(pat, name): @@ -94,7 +94,7 @@ break else: # no WP file - pat = "[bB][0-9]\.0" + pat = "[bB][0-9]\.(0|[^0-9])" if re.match(pat, name): head = HEAD1 else: @@ -105,7 +105,7 @@ #.. |wp| replace:: WP21 wp = line.split()[-1] - pat = "[bB]6\.7.wp[0-9]0" + pat = "[bB]6\.7\.wp[0-9]0" #if re.match(pat, name): # head = HEAD3 #else: Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From sanxiyn at codespeak.net Sat Oct 11 23:15:42 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sat, 11 Oct 2003 23:15:42 +0200 (MEST) Subject: [pypy-svn] rev 1744 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031011211542.D6E865A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sat Oct 11 23:15:42 2003 New Revision: 1744 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/buildcl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: gencl: tagbody reorganization. emit_jump for branch, instead of emit_block. buildcl: readlisp now can read boolean. test_cltrans: cl_func is simpler to call than make_cl_func. new test. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sat Oct 11 23:15:42 2003 @@ -15,7 +15,10 @@ self.op_default() binary_ops = { "add": "+", + "inplace_add": "+", # weird, but it works "mod": "mod", + "lt": "<", + "eq": "=", } def op_default(self): print "; Op", self.opname, "is missing" @@ -70,24 +73,32 @@ print self.str(arg), print ")" print "(block nil" - self.emit_block(fun.startblock) + print "(tagbody" + startblock = fun.startblock + blocklist = [] + def collect_block(node): + if isinstance(node, BasicBlock): + blocklist.append(node) + startblock.visit(collect_block) + for block in blocklist: + tag = len(self.blockref) + self.blockref[block] = tag + for block in blocklist: + self.emit_block(block) + print ")" print ")" print ")" def emit_block(self, block): - print "(tagbody" - nb = len(self.blockref) - tag = self.blockref.setdefault(block, nb) - if tag != nb: - print "(go", "tag" + str(tag), ")" - print ")" # close tagbody - return self.cur_block = block + tag = self.blockref[block] print "tag" + str(tag) for op in block.operations: emit_op = Op(self, op) emit_op() self.dispatch_branch(block.branch) - print ")" + def emit_jump(self, block): + tag = self.blockref[block] + print "(go", "tag" + str(tag), ")" def dispatch_branch(self, branch): if isinstance(branch, Branch): self.emit_branch(branch) @@ -96,7 +107,7 @@ elif isinstance(branch, EndBranch): self.emit_end_branch(branch) else: - print branch.__class__, "is missing" + print "; Branch", branch.__class__, "is missing" def emit_branch(self, branch): if branch.target.has_renaming: source = branch.args @@ -106,7 +117,7 @@ init, var = map(self.str, item) print var, init, print ")" - self.emit_block(branch.target) + self.emit_jump(branch.target) def emit_conditional_branch(self, branch): print "(if" self.emit_truth_test(branch.condition) Modified: pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/test/buildcl.py Sat Oct 11 23:15:42 2003 @@ -7,8 +7,14 @@ from vpath.adapter.process import exec_cmd def readlisp(s): - # For now, let's return int only - return int(s) + # Return bool and int only + s = s.strip() + if s == "T": + return True + elif s == "NIL": + return False + else: + return int(s) def make_cl_func(func, cl, path): fun = FlowObjSpace().build_flow(func) Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 11 23:15:42 2003 @@ -12,6 +12,8 @@ self.cl = cl else: raise test.TestSkip + def cl_func(self, func): + return make_cl_func(func, self.cl, udir) #___________________________________ def if_then_else(cond, x, y): @@ -20,11 +22,11 @@ else: return y def test_if_bool(self): - cl_if = make_cl_func(self.if_then_else, self.cl, udir) + cl_if = self.cl_func(self.if_then_else) self.assertEquals(cl_if(True, 50, 100), 50) self.assertEquals(cl_if(False, 50, 100), 100) def test_if_int(self): - cl_if = make_cl_func(self.if_then_else, self.cl, udir) + cl_if = self.cl_func(self.if_then_else) self.assertEquals(cl_if(0, 50, 100), 100) self.assertEquals(cl_if(1, 50, 100), 50) @@ -37,8 +39,22 @@ r = a % b return b def test_gcd(self): - cl_gcd = make_cl_func(self.my_gcd, self.cl, udir) + cl_gcd = self.cl_func(self.my_gcd) self.assertEquals(cl_gcd(96, 64), 32) + #___________________________________ + def is_perfect_number(n): + div = 1 + sum = 0 + while div < n: + if n % div == 0: + sum += div + div += 1 + return n == sum + def test_is_perfect(self): # pun intended + cl_perfect = self.cl_func(self.is_perfect_number) + self.assertEquals(cl_perfect(24), False) + self.assertEquals(cl_perfect(28), True) + if __name__ == '__main__': test.main() From sanxiyn at codespeak.net Sun Oct 12 00:08:52 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 00:08:52 +0200 (MEST) Subject: [pypy-svn] rev 1745 - pypy/trunk/src/pypy/translator Message-ID: <20031011220852.042115A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 00:08:51 2003 New Revision: 1745 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: For 2.2 Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 12 00:08:51 2003 @@ -2,6 +2,11 @@ from pypy.translator.flowmodel import * from pypy.translator.annotation import Annotator +# For 2.2 -- sanxiyn +if not isinstance(bool, type): + class bool(int): + pass + class Op: def __init__(self, gen, op): self.str = gen.str @@ -46,9 +51,7 @@ else: return "#<" def conv(self, val): - if val is None: - return "nil" - elif isinstance(val, bool): # should precedes int + if isinstance(val, bool): # should precedes int if val: return "t" else: From tismer at codespeak.net Sun Oct 12 00:45:55 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 00:45:55 +0200 (MEST) Subject: [pypy-svn] rev 1746 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031011224555.C7B045A2EF@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 00:45:53 2003 New Revision: 1746 Added: pypy/trunk/doc/funding/info_to_wps.py - copied, changed from rev 1735, pypy/trunk/doc/funding/project_planning_sums.py Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp12_validations.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt pypy/trunk/doc/funding/FIXME pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: added info_to_wps.py for automatic transfer of the project_planning.xml data into the WP headers. Created new PDF file. Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp01_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp01_management.txt Sun Oct 12 00:45:53 2003 @@ -1,14 +1,14 @@ .. include:: crossreferences.asc -.. |title| replace:: Project Coordination and Management +.. |title| replace:: Coordination and Management .. |wp| replace:: WP01 -.. |start| replace:: 1 -.. |p1| replace:: X* -.. |m1| replace:: 24 -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| +.. |start| replace:: 0 +.. |p1| replace:: CM +.. |m1| replace:: 0.33 +.. |p2| replace:: DFKI +.. |m2| replace:: 0.33 +.. |p3| replace:: STRAKT +.. |m3| replace:: 0.33 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Sun Oct 12 00:45:53 2003 @@ -1,12 +1,12 @@ .. include:: crossreferences.asc -.. |title| replace:: Maintenance of Tools +.. |title| replace:: Infrastructure and tools .. |wp| replace:: WP02 .. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 +.. |p1| replace:: PBF +.. |m1| replace:: 0.5 +.. |p2| replace:: |e| +.. |m2| replace:: |e| .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Sun Oct 12 00:45:53 2003 @@ -3,8 +3,8 @@ .. |title| replace:: Synchronisation with Standard Python .. |wp| replace:: WP03 .. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 6 +.. |p1| replace:: PBF +.. |m1| replace:: 0.5 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Sun Oct 12 00:45:53 2003 @@ -3,14 +3,14 @@ .. |title| replace:: The PyPy Core .. |wp| replace:: WP04 .. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| +.. |p1| replace:: PBF +.. |m1| replace:: 3 +.. |p2| replace:: MPI +.. |m2| replace:: 1 +.. |p3| replace:: DFKI +.. |m3| replace:: 0.56 +.. |p4| replace:: Logilab +.. |m4| replace:: 0.44 .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Sun Oct 12 00:45:53 2003 @@ -3,12 +3,12 @@ .. |title| replace:: The PyPy Translation .. |wp| replace:: WP05 .. |start| replace:: 0 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| -.. |p3| replace:: |e| -.. |m3| replace:: |e| +.. |p1| replace:: PBF +.. |m1| replace:: 3 +.. |p2| replace:: STRAKT +.. |m2| replace:: 1 +.. |p3| replace:: USH +.. |m3| replace:: 1 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Sun Oct 12 00:45:53 2003 @@ -1,14 +1,14 @@ .. include:: crossreferences.asc -.. |title| replace:: Core Optimisations +.. |title| replace:: Core Optimizations .. |wp| replace:: WP06 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 4 -.. |p2| replace:: Y -.. |m2| replace:: 4 -.. |p3| replace:: Z -.. |m3| replace:: 4 +.. |start| replace:: 0 +.. |p1| replace:: USH +.. |m1| replace:: 1 +.. |p2| replace:: PBF +.. |m2| replace:: 0.6 +.. |p3| replace:: |e| +.. |m3| replace:: |e| .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Sun Oct 12 00:45:53 2003 @@ -1,12 +1,12 @@ .. include:: crossreferences.asc -.. |title| replace:: Translator Optimisations +.. |title| replace:: Translator Optimizations .. |wp| replace:: WP07 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 6 +.. |start| replace:: 0 +.. |p1| replace:: PBF +.. |m1| replace:: 3.44 +.. |p2| replace:: |e| +.. |m2| replace:: |e| .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt Sun Oct 12 00:45:53 2003 @@ -1,16 +1,16 @@ .. include:: crossreferences.asc -.. |title| replace:: Dynamic optimizations and features +.. |title| replace:: Dynamic Optimizations .. |wp| replace:: WP08 -.. |start| replace:: M2 -.. |p1| replace:: AR -.. |m1| replace:: 6 -.. |p2| replace:: Y -.. |m2| replace:: 2 -.. |p3| replace:: Y -.. |m3| replace:: 2 -.. |p4| replace:: Z -.. |m4| replace:: 2 +.. |start| replace:: 0 +.. |p1| replace:: PBF +.. |m1| replace:: 2 +.. |p2| replace:: MPI +.. |m2| replace:: 1 +.. |p3| replace:: STRAKT +.. |m3| replace:: 1 +.. |p4| replace:: |e| +.. |m4| replace:: |e| .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sun Oct 12 00:45:53 2003 @@ -11,10 +11,10 @@ .. |title| replace:: Extend Language with Search and Logic .. |wp| replace:: WP09 .. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 +.. |p1| replace:: DFKI +.. |m1| replace:: 1 +.. |p2| replace:: Logilab +.. |m2| replace:: 0.6 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sun Oct 12 00:45:53 2003 @@ -1,78 +1,78 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN - -FIXME -participants: Logilab and DFKI -time estimates: ? -roughly 1,5 person each --> 3 person total for 1 year (?) - -FIXME Semantic Web in the title ? - -:DELETE:END - -.. |title| replace:: Extend Language with Aspects and Contracts -.. |wp| replace:: WP10 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 0 -.. |p2| replace:: Y -.. |m2| replace:: 0 -.. |p3| replace:: Z -.. |m3| replace:: 0 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Leveraging PyPy flexibility implement aspect-oriented programming, -design-by-contract and advanced static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - - -**Task 1** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -**Task 2** - -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. -This will also allow us to implement advanced static -checking and code correctness checking capabilities, thus furthering -the work done with the pychecker and pylint tools. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - - -.. include:: wp-tableend.asc +.. include:: crossreferences.asc + +:DELETE:BEGIN + +FIXME +participants: Logilab and DFKI +time estimates: ? +roughly 1,5 person each --> 3 person total for 1 year (?) + +FIXME Semantic Web in the title ? + +:DELETE:END + +.. |title| replace:: Extend Language with Aspects and Contracts +.. |wp| replace:: WP10 +.. |start| replace:: 0 +.. |p1| replace:: Logilab +.. |m1| replace:: 1 +.. |p2| replace:: DFKI +.. |m2| replace:: 0.67 +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +Leveraging PyPy flexibility implement aspect-oriented programming, +design-by-contract and advanced static checking capabilities. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + + +**Task 1** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current aspect-oriented libraries +available from Logilab, to better integrate with the language +and greatly simplify the design and enhance the performance. + +**Task 2** + +This aspect enabled interpreter will be used to offer +design-by-contract facilities as seen in the Eiffel programming +language and the current aspect-oriented library. +This will also allow us to implement advanced static +checking and code correctness checking capabilities, thus furthering +the work done with the pychecker and pylint tools. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Implementation of aspect-oriented programming + capabilities in PyPy + +- DL??? Implementation of design-by-contract and advanced + static checking capabilities. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + + +.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 00:45:53 2003 @@ -1,69 +1,69 @@ -.. include:: crossreferences.asc - -:DELETE:BEGIN - -FIXME -participants: Logilab and DFKI -time estimates: ? -roughly 1,5 person each --> 3 person total for 1 year (?) - -FIXME Semantic Web in the title ? - -:DELETE:END - -.. |title| replace:: Embed in Specialized Hardware -.. |wp| replace:: WP11 -.. |start| replace:: M2 -.. |p1| replace:: X -.. |m1| replace:: 0 -.. |p2| replace:: Y -.. |m2| replace:: 0 -.. |p3| replace:: Z -.. |m3| replace:: 0 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -The capacity of this interpreter to be assembled from basic modules -will enable us to build a minimal custom version that suits embedded -systems. This embedded version will be validated on existing hardware. - -FIXME talk about ChangeMaker and Axis here ? Logilab is willing to participate. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Coordinate with WP13_ to build a minimal interpreter suitable for -embedding on devices with restricted resources. - -**Task 2** - -Validate interpreter on existing hardware. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Minimal interperter suitable for embedded devices. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - - -.. include:: wp-tableend.asc +.. include:: crossreferences.asc + +:DELETE:BEGIN + +FIXME +participants: Logilab and DFKI +time estimates: ? +roughly 1,5 person each --> 3 person total for 1 year (?) + +FIXME Semantic Web in the title ? + +:DELETE:END + +.. |title| replace:: Embed in Specialized Hardware +.. |wp| replace:: WP11 +.. |start| replace:: 0 +.. |p1| replace:: Logilab +.. |m1| replace:: 0.6 +.. |p2| replace:: CM +.. |m2| replace:: 0.07 +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +The capacity of this interpreter to be assembled from basic modules +will enable us to build a minimal custom version that suits embedded +systems. This embedded version will be validated on existing hardware. + +FIXME talk about ChangeMaker and Axis here ? Logilab is willing to participate. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +**Task 1** + +Coordinate with WP13_ to build a minimal interpreter suitable for +embedding on devices with restricted resources. + +**Task 2** + +Validate interpreter on existing hardware. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Minimal interperter suitable for embedded devices. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + + +.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp12_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_validations.txt Sun Oct 12 00:45:53 2003 @@ -1,12 +1,12 @@ .. include:: crossreferences.asc -.. |title| replace:: Implementation of Security, Distribution and Persistence +.. |title| replace:: Implement Security, Distribution and Persistence .. |wp| replace:: WP12 -.. |start| replace:: M4/M3 -.. |p1| replace:: |e| -.. |m1| replace:: |e| -.. |p2| replace:: |e| -.. |m2| replace:: |e| +.. |start| replace:: WP07, WP08 +.. |p1| replace:: PBF +.. |m1| replace:: 3 +.. |p2| replace:: STRAKT +.. |m2| replace:: 1 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Sun Oct 12 00:45:53 2003 @@ -1,12 +1,12 @@ .. include:: crossreferences.asc .. |title| replace:: Integration and Configuration -.. |wp| replace:: WP12 -.. |start| replace:: 0 -.. |p1| replace:: X -.. |m1| replace:: 5 -.. |p2| replace:: Y -.. |m2| replace:: 5 +.. |wp| replace:: WP13 +.. |start| replace:: WP07, WP08 +.. |p1| replace:: PBF +.. |m1| replace:: 2 +.. |p2| replace:: MPI +.. |m2| replace:: 1 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Sun Oct 12 00:45:53 2003 @@ -1,14 +1,14 @@ .. include:: crossreferences.asc -.. |title| replace:: Project Documentation and Dissemination +.. |title| replace:: Documentation and Dissemination .. |wp| replace:: WP14 .. |start| replace:: 0 -.. |p1| replace:: AM -.. |m1| replace:: 19 -.. |p2| replace:: JH -.. |m2| replace:: 3 -.. |p3| replace:: MWH -.. |m3| replace:: 3 +.. |p1| replace:: CM +.. |m1| replace:: 0.5 +.. |p2| replace:: PBF +.. |m2| replace:: 0.5 +.. |p3| replace:: |e| +.. |m3| replace:: |e| .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 00:45:53 2003 @@ -186,10 +186,17 @@ Needs editing. NOT STARTED +B6.7.wp* +Needs synchronisation with project_planning.xml +Note: no longer edit the wp file headers. +Instead, run info_to_wps.py after changing the XML. +DONE chris + B7.0_other_issues Needs writing. CORRECTED jacob project_planning.xml Needs general agreement before we copy info to B6.7* files. -NOT STARTED. +Note: This can be repeated as often as neded, now. +CORRECTED chris Copied: pypy/trunk/doc/funding/info_to_wps.py (from rev 1735, pypy/trunk/doc/funding/project_planning_sums.py) ============================================================================== --- pypy/trunk/doc/funding/project_planning_sums.py (original) +++ pypy/trunk/doc/funding/info_to_wps.py Sun Oct 12 00:45:53 2003 @@ -1,51 +1,122 @@ -import re - +# parse project_planning.xml +# and put the parameters into the WP files. +# +# CT 03-SEP-11 + +import xml.sax +import mkxref + +class MyHandler(xml.sax.ContentHandler): + + def __init__(self): + self.in_wp = False + self.current_wp = "" + self.buffer = "" + self.constraints = [] + self.parties = {} + self.duration = 0 + self.result_set = {} + xml.sax.ContentHandler.__init__(self) + + def startElement(self, name, attrs): + if name == "task": + id = attrs["id"] + if id[:2].lower() == "wp": + self.in_wp = True + self.current_wp = "WP%02d" % int(id[2:]) + self.constraints = [] + self.parties = {} + return + if name == "use-resource": + idref = attrs["idref"] + cost = attrs["cost"] + party = idref.split("_")[1].upper() + if party == "LOGILAB": + party = "Logilab" + cost = float(cost) + permonth = cost / self.duration + #print cost, usage, self.duration, permonth + self.parties[party] = self.parties.get(party, 0) + self.parties[party] += permonth + + def endElement(self, name): + if name == "task": + if not self.in_wp: + return + #print name, self.constraints, self.parties + self.result_set[self.current_wp] = self.title, self.constraints, self.parties + self.in_wp = False + return + if name == "constraint": + # we are after constraint and have the buffer + wp = self.buffer.strip().upper() + if wp[:2] == "WP": + if len(wp) < 4: + wp = "WP0" + wp[2:] + self.constraints.append(wp) + return + if name == "duration": + self.duration = int(self.buffer.strip()) + return + if name == "label": + self.title = self.buffer.split("-", 1)[-1].strip() + + def characters(self, content): + self.buffer = content + +template = """\ +.. |title| replace:: |e| +.. |wp| replace:: |e| +.. |start| replace:: |e| +.. |p1| replace:: |e| +.. |m1| replace:: |e| +.. |p2| replace:: |e| +.. |m2| replace:: |e| +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| +""" + +def edit_wp_text(s, wp, title, constraints, parties): + pre, rest = s.split(".. |title|") + ign, post = rest.split(".. |m6| replace:: |e|") + pre = pre.strip()+"\n\n" + post = "\n" + post.strip() + "\n" + t = template + t = t.replace("|e|", title, 1) + t = t.replace("|e|", wp, 1) + if constraints: + start = ", ".join(constraints) + else: + start = "0" + t = t.replace("|e|", start, 1) + # trick: use negative dur for sorting + rev = [ (-dur, name) for name, dur in parties.iteritems() ] + rev.sort() + for dur, name in rev: + dur = abs(dur) + t = t.replace("|e|", name, 1) + durtext = "%1.3g" % dur + durt2 = "%0.2f" % dur + if len(durt2) < len(durtext): + durtext = durt2 + t = t.replace("|e|", durtext, 1) + return pre + t + post + f = file('project_planning.xml', 'r') - -task = re.compile(r'^ Author: tismer Date: Sun Oct 12 00:48:17 2003 New Revision: 1747 Added: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (props changed) - copied unchanged from rev 1746, pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt Removed: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt Modified: pypy/trunk/doc/funding/crossreferences.asc Log: renamed for consistency about "s" instead of "z" Deleted: /pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimization.txt Sun Oct 12 00:48:17 2003 +++ (empty file) @@ -1,67 +0,0 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Dynamic Optimizations -.. |wp| replace:: WP08 -.. |start| replace:: 0 -.. |p1| replace:: PBF -.. |m1| replace:: 2 -.. |p2| replace:: MPI -.. |m2| replace:: 1 -.. |p3| replace:: STRAKT -.. |m3| replace:: 1 -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Enhance PyPy to dynamically adapt to its run-time environment and -to the characteristics of the running program. Dramatically -increase speed by enabling Just-In-Time compilation and -specialization. Address multiple processor architectures. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Apply and enhance techniques from the Psyco project. Promote parts -of the static translator to be used for run-time specialization. - -**Task 2** - -Design and implement a back-end component for dynamically emitting -machine code for multiple processor architectures. Enable dynamic -foreign function calls. - -**Task 3** - -Research optimisation heuristics for the Just-In-Time compiler. -Coordinate with WP06_. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. -- DL??? A Just-In-Time compiler for PyPy. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -- M3 High performance PyPy, together with WP07_. Outperform the - state-of-the art (Psyco, Stackless). - -.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/crossreferences.asc ============================================================================== --- pypy/trunk/doc/funding/crossreferences.asc (original) +++ pypy/trunk/doc/funding/crossreferences.asc Sun Oct 12 00:48:17 2003 @@ -5,7 +5,7 @@ .. _WP05: B6.7.wp05_translation.html .. _WP06: B6.7.wp06_core_optimisations.html .. _WP07: B6.7.wp07_translator_optimisations.html -.. _WP08: B6.7.wp08_dynamic_optimization.html +.. _WP08: B6.7.wp08_dynamic_optimisation.html .. _WP09: B6.7.wp09_search_and_logic.html .. _WP10: B6.7.wp10_aspects_and_contracts.html .. _WP11: B6.7.wp11_embed_in_hardware.html From tismer at codespeak.net Sun Oct 12 00:57:02 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 00:57:02 +0200 (MEST) Subject: [pypy-svn] rev 1748 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031011225702.4FC875A2EF@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 00:57:00 2003 New Revision: 1748 Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp12_validations.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt pypy/trunk/doc/funding/info_to_wps.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: correction: I computed person months per month. Changed to total, as it should be. sorry Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp01_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp01_management.txt Sun Oct 12 00:57:00 2003 @@ -4,11 +4,11 @@ .. |wp| replace:: WP01 .. |start| replace:: 0 .. |p1| replace:: CM -.. |m1| replace:: 0.33 +.. |m1| replace:: 8 .. |p2| replace:: DFKI -.. |m2| replace:: 0.33 +.. |m2| replace:: 8 .. |p3| replace:: STRAKT -.. |m3| replace:: 0.33 +.. |m3| replace:: 8 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Sun Oct 12 00:57:00 2003 @@ -4,7 +4,7 @@ .. |wp| replace:: WP02 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 0.5 +.. |m1| replace:: 12 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Sun Oct 12 00:57:00 2003 @@ -4,7 +4,7 @@ .. |wp| replace:: WP03 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 0.5 +.. |m1| replace:: 12 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Sun Oct 12 00:57:00 2003 @@ -4,13 +4,13 @@ .. |wp| replace:: WP04 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 3 +.. |m1| replace:: 27 .. |p2| replace:: MPI -.. |m2| replace:: 1 +.. |m2| replace:: 9 .. |p3| replace:: DFKI -.. |m3| replace:: 0.56 +.. |m3| replace:: 5 .. |p4| replace:: Logilab -.. |m4| replace:: 0.44 +.. |m4| replace:: 4 .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Sun Oct 12 00:57:00 2003 @@ -4,11 +4,11 @@ .. |wp| replace:: WP05 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 3 +.. |m1| replace:: 27 .. |p2| replace:: STRAKT -.. |m2| replace:: 1 +.. |m2| replace:: 9 .. |p3| replace:: USH -.. |m3| replace:: 1 +.. |m3| replace:: 9 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Sun Oct 12 00:57:00 2003 @@ -4,9 +4,9 @@ .. |wp| replace:: WP06 .. |start| replace:: 0 .. |p1| replace:: USH -.. |m1| replace:: 1 +.. |m1| replace:: 15 .. |p2| replace:: PBF -.. |m2| replace:: 0.6 +.. |m2| replace:: 9 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Sun Oct 12 00:57:00 2003 @@ -4,7 +4,7 @@ .. |wp| replace:: WP07 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 3.44 +.. |m1| replace:: 31 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt Sun Oct 12 00:57:00 2003 @@ -4,11 +4,11 @@ .. |wp| replace:: WP08 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 2 +.. |m1| replace:: 18 .. |p2| replace:: MPI -.. |m2| replace:: 1 +.. |m2| replace:: 9 .. |p3| replace:: STRAKT -.. |m3| replace:: 1 +.. |m3| replace:: 9 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sun Oct 12 00:57:00 2003 @@ -12,9 +12,9 @@ .. |wp| replace:: WP09 .. |start| replace:: 0 .. |p1| replace:: DFKI -.. |m1| replace:: 1 +.. |m1| replace:: 15 .. |p2| replace:: Logilab -.. |m2| replace:: 0.6 +.. |m2| replace:: 9 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sun Oct 12 00:57:00 2003 @@ -15,9 +15,9 @@ .. |wp| replace:: WP10 .. |start| replace:: 0 .. |p1| replace:: Logilab -.. |m1| replace:: 1 +.. |m1| replace:: 9 .. |p2| replace:: DFKI -.. |m2| replace:: 0.67 +.. |m2| replace:: 6 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 00:57:00 2003 @@ -15,9 +15,9 @@ .. |wp| replace:: WP11 .. |start| replace:: 0 .. |p1| replace:: Logilab -.. |m1| replace:: 0.6 +.. |m1| replace:: 9 .. |p2| replace:: CM -.. |m2| replace:: 0.07 +.. |m2| replace:: 1 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp12_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_validations.txt Sun Oct 12 00:57:00 2003 @@ -4,9 +4,9 @@ .. |wp| replace:: WP12 .. |start| replace:: WP07, WP08 .. |p1| replace:: PBF -.. |m1| replace:: 3 +.. |m1| replace:: 18 .. |p2| replace:: STRAKT -.. |m2| replace:: 1 +.. |m2| replace:: 6 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Sun Oct 12 00:57:00 2003 @@ -4,9 +4,9 @@ .. |wp| replace:: WP13 .. |start| replace:: WP07, WP08 .. |p1| replace:: PBF -.. |m1| replace:: 2 +.. |m1| replace:: 12 .. |p2| replace:: MPI -.. |m2| replace:: 1 +.. |m2| replace:: 6 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Sun Oct 12 00:57:00 2003 @@ -4,9 +4,9 @@ .. |wp| replace:: WP14 .. |start| replace:: 0 .. |p1| replace:: CM -.. |m1| replace:: 0.5 +.. |m1| replace:: 12 .. |p2| replace:: PBF -.. |m2| replace:: 0.5 +.. |m2| replace:: 12 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/info_to_wps.py ============================================================================== --- pypy/trunk/doc/funding/info_to_wps.py (original) +++ pypy/trunk/doc/funding/info_to_wps.py Sun Oct 12 00:57:00 2003 @@ -34,10 +34,12 @@ if party == "LOGILAB": party = "Logilab" cost = float(cost) - permonth = cost / self.duration + #permonth = cost / self.duration + # opps, we don't want this, but toal! #print cost, usage, self.duration, permonth self.parties[party] = self.parties.get(party, 0) - self.parties[party] += permonth + #self.parties[party] += permonth + self.parties[party] += cost def endElement(self, name): if name == "task": Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From sanxiyn at codespeak.net Sun Oct 12 06:51:35 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 06:51:35 +0200 (MEST) Subject: [pypy-svn] rev 1749 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031012045135.133435A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 06:51:34 2003 New Revision: 1749 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/translator.py Log: gencl: Handles op_not_ by means of emit_truth_test. test_cltrans: Test for above change. annotation: Consider_op_not_. translator: Updated docstring and example. You can test annotation working by examine my_bool with translator.py. It's implemented as "not not", and gencl wouldn't use typecase for second not, for it knows it is already boolean. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Sun Oct 12 06:51:34 2003 @@ -104,6 +104,9 @@ consider_op_and_ = consider_op_add # don't forget the trailing '_' # XXX add more + def consider_op_not_(self, op, annotations): + annotations.set_type(op.result, bool) + # XXX give them Bool result type consider_op_lt = consider_op_add consider_op_le = consider_op_add Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 12 06:51:34 2003 @@ -9,6 +9,7 @@ class Op: def __init__(self, gen, op): + self.gen = gen self.str = gen.str self.opname = op.opname self.args = op.args @@ -17,7 +18,9 @@ if self.opname in self.binary_ops: self.op_binary(self.opname) else: - self.op_default() + default = self.op_default + meth = getattr(self, "op_" + self.opname, default) + meth() binary_ops = { "add": "+", "inplace_add": "+", # weird, but it works @@ -25,13 +28,19 @@ "lt": "<", "eq": "=", } - def op_default(self): - print "; Op", self.opname, "is missing" def op_binary(self, op): s = self.str result, (arg1, arg2) = self.result, self.args cl_op = self.binary_ops[op] print "(setq", s(result), "(", cl_op, s(arg1), s(arg2), "))" + def op_not_(self): + s = self.str + result, (arg1,) = self.result, self.args + print "(setq", s(result), "(not" + self.gen.emit_truth_test(arg1) + print "))" + def op_default(self): + print "; Op", self.opname, "is missing" class GenCL: def __init__(self, fun): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sun Oct 12 06:51:34 2003 @@ -56,5 +56,14 @@ self.assertEquals(cl_perfect(24), False) self.assertEquals(cl_perfect(28), True) + #___________________________________ + def my_bool(x): + return not not x + def test_bool(self): + cl_bool = self.cl_func(self.my_bool) + self.assertEquals(cl_bool(0), False) + self.assertEquals(cl_bool(42), True) + self.assertEquals(cl_bool(True), True) + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 12 06:51:34 2003 @@ -1,32 +1,27 @@ """ -Glue script putting together the pieces of the translator. +Glue script putting together the various pieces of the translator. Can also be used for interactive testing of the translator, when run as: python -i translator.py Example: - def f1(x): - total = 0 - for i in range(1, x+1): - total = total + i - return total - - t = Translator(f1) - t.gv() # show the control flow graph -- requires 'dot' and 'gv' - - t.simplify() - t.gv() - print t.pyrex() - - a = t.annotate([int]) # the list is the input args types - print t.pyrex() - - a.simplify() # simplifications done by the Annotator - print t.pyrex() + t = Translator(func) + t.gv() # control flow graph - f = t.compile() - print f(10) + print t.source() # original source + print t.pyrex() # pyrex translation + print t.cl() # common lisp translation + + t.simplify() # flow graph simplification + a = t.annotate([int]) # pass the list of args types + a.simplify() # simplification by annotator + + f = t.compile() # pyrex compilation + assert f(arg) == func(arg) + +Some functions will be provided for the benefit of interactive testing. +Currently there are my_bool and my_range. """ import autopath @@ -97,18 +92,16 @@ if __name__ == '__main__': - def f1(x): - total = 0 - for i in range(1, x+1): - total = total + i - return total - - def f2(x): - total = 0 - while x > 0: - total = total + x - x = x - 1 - return total + def my_bool(x): + return not not x + + def my_range(i): + lst = [] + while i > 0: + i = i - 1 + lst.append(i) + lst.reverse() + return lst print __doc__ From sanxiyn at codespeak.net Sun Oct 12 06:56:45 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 06:56:45 +0200 (MEST) Subject: [pypy-svn] rev 1750 - pypy/trunk/src/pypy/translator Message-ID: <20031012045645.DBB305A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 06:56:45 2003 New Revision: 1750 Modified: pypy/trunk/src/pypy/translator/translator.py Log: docstring change Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 12 06:56:45 2003 @@ -1,6 +1,8 @@ -""" +"""\ +PyPy Translator Frontend + Glue script putting together the various pieces of the translator. -Can also be used for interactive testing of the translator, when run as: +Can be used for interactive testing of the translator. Run as: python -i translator.py From sanxiyn at codespeak.net Sun Oct 12 07:08:22 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 07:08:22 +0200 (MEST) Subject: [pypy-svn] rev 1751 - pypy/trunk/src/pypy/translator Message-ID: <20031012050822.33B6A5A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 07:08:21 2003 New Revision: 1751 Modified: pypy/trunk/src/pypy/translator/translator.py Log: Full docstring. Tries "pydoc translator". It's quite nice. Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 12 07:08:21 2003 @@ -55,7 +55,7 @@ self.py_source = "" def gv(self): - """Show the control flow graph -- requires 'dot' and 'gv'.""" + """Shows the control flow graph -- requires 'dot' and 'gv'.""" import os from pypy.translator.test.make_dot import make_dot from pypy.tool.udir import udir @@ -63,29 +63,45 @@ os.system('gv %s' % str(dest)) def simplify(self): + """Simplifies the control flow graph.""" self.flowgraph = simplify_graph(self.flowgraph) def annotate(self, input_args_types): + """annotate(self, input_arg_types) -> Annotator + + Provides type information of arguments. Returns annotator. + """ self.annotator = Annotator(self.flowgraph) self.annotator.build_types(input_args_types) return self.annotator def source(self): + """Returns original Python source. + + Returns for functions written while the + interactive session. + """ return self.py_source def pyrex(self): + """Returns Pyrex translation.""" g = GenPyrex(self.flowgraph) if self.annotator: g.setannotator(self.annotator) return g.emitcode() def cl(self): + """Returns Common Lisp translation.""" g = GenCL(self.flowgraph) if self.annotator: g.ann = self.annotator return g.emitcode() def compile(self): + """Returns compiled function. + + Currently function is only compiled using Pyrex. + """ from pypy.tool.udir import udir name = self.entrypoint.func_name pyxcode = self.pyrex() @@ -94,6 +110,7 @@ if __name__ == '__main__': + def my_bool(x): return not not x From sanxiyn at codespeak.net Sun Oct 12 09:15:08 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 09:15:08 +0200 (MEST) Subject: [pypy-svn] rev 1752 - pypy/trunk/doc Message-ID: <20031012071508.749A25A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 09:15:07 2003 New Revision: 1752 Modified: pypy/trunk/doc/oscon2003-paper.txt Log: typos Modified: pypy/trunk/doc/oscon2003-paper.txt ============================================================================== --- pypy/trunk/doc/oscon2003-paper.txt (original) +++ pypy/trunk/doc/oscon2003-paper.txt Sun Oct 12 09:15:07 2003 @@ -77,7 +77,7 @@ In a Python-like language, a running interpreter has three main parts: - * the main loop, which suffles data around and calls the operations defined in the object library according to the bytecode. + * the main loop, which shuffles data around and calls the operations defined in the object library according to the bytecode. * the compiler, which represents the static optimization of the source code into an intermediate format, the bytecode; and * the object library, implementing the various types of objects and their semantics; @@ -146,11 +146,11 @@ the time needed to communicate between the various calculators, you will benefit by adding more CPUS. Thus PyPy will provide you with an alternative way to write a Cluster. (`The Beowulf Cluster`_ is -probaby the most famous of Cluster architectures). Right now 'network +probably the most famous of Cluster architectures). Right now 'network computing' is in its infancy. We don't know how to take advantage of the resources we have. Ideally, one could begin a computation on a small device, say a mobile phone, and have the interpreter notice that -the device is underpowered for such a computation and transparantly +the device is underpowered for such a computation and transparently forward the computation to a machine with more computational power. You could have *peak computing machines* in the same way that electrical utilities have plants which are expensive to @@ -164,7 +164,7 @@ Consider the question: *What is the best way to implement a dict*? How one answers depends on how much data one intends to store. -If the dict is never expcted to have more than a half dozen items, a +If the dict is never expected to have more than a half dozen items, a really fast list may be best. Larger dicts might best be implemented as hashes. For storing enormous amounts of data, a binary tree might be just what you desire. In principle, there is @@ -223,7 +223,7 @@ Runtime Adaptation of C-Libraries and System-Calls ++++++++++++++++++++++++++++++++++++++++++++++++++ Python is already widely used for integrating and driving C-libraries -(for numerical compuatation, 3D-modeling etc.). We dream +(for numerical computation, 3D-modeling etc.). We dream of introducing runtime mechanisms that allow PyPy to directly setup and execute "native" calls on a machine. For this to work we need "trampolin" (assembler-) functions that build a C-like stackframe @@ -270,8 +270,8 @@ You could load your existing modules with the Object Space they were developed for while immediately using new features in new code that you develop. It would be up to the PyPy interpreter to see that these -Object Spaces communicate with each other transparantly. Only modules -that would particularily benefit from having the new features, would +Object Spaces communicate with each other transparently. Only modules +that would particularly benefit from having the new features, would be modified. The rest could sleep peacefully, unchanged. This leads to: @@ -379,7 +379,7 @@ print (reduce(lambda x, y: x+y, [t[2] for t in slips], 0))/900 -Pypy said: 603 SEK, or appoximately 75 USD. Don't believe people who +Pypy said: 603 SEK, or approximately 75 USD. Don't believe people who tell you that Sprints are too expensive to hold. The Annotation Object Space @@ -425,7 +425,7 @@ The eventual hope is to run all of the code that implements PyPy's interpreter and the standard object space with the annotation object space and gain sufficient knowledge of the values involved to generate -efficent code (in C, Pyrex_, O'Caml, Java or whatever) to do the same +efficient code (in C, Pyrex_, O'Caml, Java or whatever) to do the same job. If you're wondering how we expect to get a speed up of 20000 times by @@ -434,7 +434,7 @@ main reason for the standard object space's current slowness is the computation of which code to execute each time a multimethod is called. The knowledge gathered by the Annontation Object Space should -be sufficient to remove or at lesat substantially reduce this computation +be sufficient to remove or at least substantially reduce this computation for most of the call sites. Current plans are to use the information gathered from the Annotation Object @@ -448,7 +448,7 @@ inheritance and the Method Resolution Order are defined, and where attribute look-ups are done. -Instances of user-defined types are implementated as W_UserObjects. A +Instances of user-defined types are implemented as W_UserObjects. A user-defined type can inherit from built-in types (maybe more than one, although this is incompatible with CPython). The W_UserObject delegator converts the object into any of these "parent objects" if @@ -581,7 +581,7 @@ .. _roundup: http://roundup.sourceforge.net/ .. _moinmoin: http://moin.sourceforge.net/ -The members of the PyPy team are especiallly grateful to RyanAir_, without +The members of the PyPy team are especially grateful to RyanAir_, without which holding Sprints would be prohibitively expensive, freenode.net_ which lets us communicate with each other on the #pypy channel, and the Subversion_ development team, without whom restructuring the entire universe @@ -592,9 +592,9 @@ .. _Subversion: http://subversion.tigris.org/ -.. [#] The PyPy homespage: http://www.codespeak.net/pypy/ +.. [#] The PyPy homepage: http://www.codespeak.net/pypy/ .. [#] See for instance, Scheme48's PreScheme -.. [#] The Squeak homespage: http://www.squeak.org/ +.. [#] The Squeak homepage: http://www.squeak.org/ .. [#] See *Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself* ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html .. [#] CPython is what we call the commonly available Python_ which you From sanxiyn at codespeak.net Sun Oct 12 11:13:38 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 12 Oct 2003 11:13:38 +0200 (MEST) Subject: [pypy-svn] rev 1754 - pypy/trunk/doc Message-ID: <20031012091338.ED9315A2EF@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 12 11:13:38 2003 New Revision: 1754 Modified: pypy/trunk/doc/oscon2003-paper.txt Log: wrong link Modified: pypy/trunk/doc/oscon2003-paper.txt ============================================================================== --- pypy/trunk/doc/oscon2003-paper.txt (original) +++ pypy/trunk/doc/oscon2003-paper.txt Sun Oct 12 11:13:38 2003 @@ -15,7 +15,7 @@ writing the language itself. .. _PyPy: http://www.codespeak.net/pypy/ -.. _Python: http://www.python.org/.. +.. _Python: http://www.python.org/ .. _Scheme: http://www.swiss.ai.mit.edu/projects/scheme/ .. _Squeak: http://www.squeak.org .. _Smalltalk: http://www.smalltalk.org/ From hpk at codespeak.net Sun Oct 12 12:33:31 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 12:33:31 +0200 (MEST) Subject: [pypy-svn] rev 1755 - pypy/trunk/doc/funding Message-ID: <20031012103331.8E5265A2EF@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 12:33:30 2003 New Revision: 1755 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: fixed typo. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sun Oct 12 12:33:30 2003 @@ -40,7 +40,7 @@ The EU is interested in **software technologies that are reliable, pervasive, interoperable and can be adapted to accommodate new -applications and services**. This exactly the focus of our project. +applications and services**. This is exactly the focus of our project. With some unique approaches to building a highly performant and productive development platform we will further innovation and interoperability. From hpk at codespeak.net Sun Oct 12 13:32:19 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 13:32:19 +0200 (MEST) Subject: [pypy-svn] rev 1756 - pypy/trunk/doc/funding Message-ID: <20031012113219.01DD45A442@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 13:32:18 2003 New Revision: 1756 Added: pypy/trunk/doc/funding/B4.0_resources.asc (props changed) - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.0_resources.txt pypy/trunk/doc/funding/B4.1_subcontracting.asc (props changed) - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B4.2_other_countries.asc (props changed) - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.2_other_countries.txt pypy/trunk/doc/funding/B4.3_participants.asc - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.3_participants.txt pypy/trunk/doc/funding/B4.4_quality_SMEs.asc - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B4.5_resources.asc - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.5_resources.txt pypy/trunk/doc/funding/B4.6_finance.asc - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.6_finance.txt pypy/trunk/doc/funding/B4.7_effort_form.asc - copied unchanged from rev 1755, pypy/trunk/doc/funding/B4.7_effort_form.txt pypy/trunk/doc/funding/B4.resources.txt Removed: pypy/trunk/doc/funding/B4.0_resources.txt pypy/trunk/doc/funding/B4.1_subcontracting.txt pypy/trunk/doc/funding/B4.2_other_countries.txt pypy/trunk/doc/funding/B4.3_participants.txt pypy/trunk/doc/funding/B4.4_quality_SMEs.txt pypy/trunk/doc/funding/B4.5_resources.txt pypy/trunk/doc/funding/B4.6_finance.txt pypy/trunk/doc/funding/B4.7_effort_form.txt Log: merged B4.* into a single B4.resources.txt with hopefully correct REST markup. renamed all old B4.*.txt to B4.*.asc Deleted: /pypy/trunk/doc/funding/B4.0_resources.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.0_resources.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,72 +0,0 @@ -:DELETE:BEGIN - -B.4 The consortium and project resources - -Describe the role of the participants and the specific skills of each -of them. Show how the participants are suited and committed to the -tasks assigned to them; show the complementarity between -participants. Describe how the opportunity of involving SMEs has been -addressed. Describe the resources, human and material, that will be -deployed for the implementation of the project. Include a STREP -Project Effort Form, as shown below, covering the full duration of the -project. Demonstrate how the project will mobilise the critical mass -of resources (personnel, equipment, finance... ) necessary for -success; and show that the overall financial plan for the project is -adequate. - -(Recommended length ? five pages) - -:DELETE:END - -The consortium and project resources -===================================== - -FIXME_NICO FIXME_LAURA FIXME_HOLGER check below information - -**DFKI** - - Role: Project Coordinator & Technical Partner - Country: Germany - Contact: Alastair Burt - - Skills, Commitment, Resources: - - -**AB Strakt** - - Role: Project Management & Technical Partner - Country: Sweden - Contact: Jacob Hall?n - - Skills, Commitment, Resources: - - -**University of Southampton** - - Role: Technical Partner - Country: United Kingdom - Contact: Armin Rigo - - Skills, Commitment, Resources: - - -**Python Business Forum** - - Role: Technical Partner - Country: Europe - Contact: Holger Krekel - - Skills, Commitment, Resources: - -**Logilab** - - Role: Technical Partner - Country: France - Contact: Nicolas Chauvat - - Skills, Commitment, Resources: advanced computing, artificial intelligence, - applying new techniques to solve industrial clients' problems. XXXFIXME - - -interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, -anna ravenscroft, gunter janton, samuele pedroni Deleted: /pypy/trunk/doc/funding/B4.1_subcontracting.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.1_subcontracting.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,25 +0,0 @@ -FIXME_LAURA - -:DELETE:BEGIN - -B.4.1 Sub-contracting: - -If any part of the work is foreseen to be sub-contracted by the -participant responsible for it, describe the work involved and explain -why a sub-contract approach has been chosen for it. - -(Recommended length ? one page) - -:DELETE:END - -FIXME_LAURA yes, I have to write this. Get figures from KPMG - -Sub-contracting -================= - -I am going to run my accounting figures though the AB Strakt -bookkeeper, as part of my management duties. She is a contractor -who consults regularly to AB Strakt. Aside from that I don't -see that we will have any need for sub-contracting. Possibly to get -final stamps of approval on the books from KPMG our accounting -firm. This is the sort of thing that AB Strakt does all the time. Deleted: /pypy/trunk/doc/funding/B4.2_other_countries.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.2_other_countries.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,20 +0,0 @@ -FIXME_LAURA -- discuss role of PBF in mitigating Samuele's and Tim's -problem? phone call to Belgium to ask this happening. - -:DELETE:BEGIN - -B.4.2 Other countries : - -If one or more of the participants is based outside of the EU Member -and Associated states, explain in terms of the project's objectives -why this/these participants have been included, describe the level of -importance of their contribution to the project. - -(Recommended length ? one page). - -:DELETE:END - -Other countries -================= - -(section cannot be empty for ReST) Deleted: /pypy/trunk/doc/funding/B4.3_participants.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.3_participants.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,146 +0,0 @@ -:DELETE:BEGIN - -FIXME EVERYBODY -- CVs -FIXME JACOB -FIXME LAURA MAKE SURE THIS GETS DONE -B.4.3 Description of the participants - -Short description of the participating organisations including: - -? The expertise and experience of the organisation, - -? Short CVs of the key persons to be involved indicating relevant - experience, expertise and involvement in other EC projects. (Each - CV no more than 10 lines) Remember that you cannot contractually - commit to these specific persons being assigned so you should state - that these named people or their equivalent will be assigned - -The CV of the nominated Project Manager is of particular importance. -You have to show that he has experience of successful international -project management. Emphasise this aspect. - -:DELETE:END - -Description of the participants ----------------------------------- - -Jacob Hall?n, 45, comes to his position as co-founder and CTO of AB Strakt from -being a Technical Manager and international standards expert at the LIBRIS -Department of the Royal Library. He was the LIBRIS representative in the EU -funded ONE-2 project. Before this, he was the CEO of NetGuide Scandinavia AB, -one of the first internet services companies in Sweden. Mr Hall?n has also been -a Computer Science and Programming teacher and an army officer. Throughout his -career he has been managing projects varying from 1200 participant conventions -down to 3 person development projects. He has also done electronics development -and microcontroller programming, winning two innovation awards in the process. -Mr Hall?n is chairman of the Python Business Forum. - -Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher at the -University of Southampton (UK). He studied Mathematics at the University of -Lausanne and obtained his Ph.D. in Logic and Set Theory at the Free University -of Brussels. He is the main author of several commercial, open source and -research programs and contributed to a number of them, most notably in the -fields of computer graphics and 3D modelling, education, and programming -languages. He recently developed in the Psyco project novel techniques for -efficient interpretation of dynamic programming languages. He is also a member -and contributor of the TUNES Project for a Free Reflective Computing System. - -Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead -programmer producing games for Electronic Arts. He went to university, gave -courses in Prolog, C, Assembler, mathematics and assisted in numerical -computing. He got his degree "magna cum laude". He consulted for Volkswagen, -large German banks and the chairman of the EU-founded CEN/ISSS workshop who -contracted him to prototype integration of OpenSource software. He implemented -an opensource transaction service on top of TAO/CORBA and published several -articles about Free projects. In 2001 he joined the Python community, published -an interactive tool, took part in Zope3 development and some of the first coding -Sprints in Europe and became one of the initiators of the PyPy project. - -Tim Peters: Over 20 years top-tier industrial experience in programming language -implementation and high-performance computing. 1979-1988, Cray Research: -Compiler development, Group leader--common back-end optimization group. 1988- -1994, Kendall Square Research (KSR), Compiler and Library development, -Architecture and FPU design. 1994-2000, Dragon Systems: Developed core speech -recognition system for portable devices; scalable, large-scale telephone speech -recognition; and award-winning PhoneQuery Toolkit product. 2000 to present: -Zope Corporation: Development--Core technologies underlying Zope's leading -content management framework; Python core. Python: first port of Python to 64- -bit platform (KSR-1); POSIX pthreads support; algorithmic and optimization -expertise; elected Director of Python Software Foundation (PSF) since its -inception. - -Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor of -*Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, -Python langauge developer, PBF board member. Currently works for AB Strakt, -developing the CAPS framework. Also consults for other firms on Python and O-O -design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab -(think3, Inc): innovative component architecture for web-enabling existing GUI- -oriented apps; Event Manager, interfacing, proprietary protocols. Taught -Computer Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM -Research: 3 Outstanding Technical Achievement awards, voice recognition, image -processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 -magna cum laude. - -Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His -thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as -teaching/published research assistant at the Institute of Theor. CS of the ETHZ. -He was designer on the state-of-the-art genetic programming framework for Java -JRGP, becoming involved in Jython (the industry-strength Java re-implemetation -of Python). He is now a main developer of Jython, working on internals, -compilers and Java integration, and was author of Jython Essentials (O'Reilly, -2002). He is also involved on the ongoing design of Python. For his -contributions to Python/Jython he has been nominated member of the PSF. He -brings to the project his know-how on languages, re-implementation/design of -Python, reflection, lookup and dispatch optimization. - -Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer of the -PBF. Studied Physics (csc minor) at the University of Toronto, and later -instructed there in Physics and Computer Science, while simultaneously working -for the Canadian Armed Forces, teaching programming to non-programmers, and -assisting with research in Human Factors Engineering and Learning Techniques. -Moving to the US, she consulted for software companies and government -institutions, taught Unix, project management, and interpersonal relations, and -wrote a geophysical simulation system. She brings strong connections in -financial and government sectors, and was an Open Source advocate before the -term was coined. Her passions: programming, empowerment of average citizens, -and the Open Society. - -Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in -Sweden. She was recruited into the IT-industry to work as a project manager for -large scale education projects for the company NetGuide Scandinavia, Gothenburg. -Since 1998 she has been working with education and development project -management and management of education and consultant departements, implementing -Open Source strategies and Agile development methods. Beatrice also teaches -project management, leadership and communication courses for Learning Tree -International. - -Anna Ravenscroft: Started programming with Python in 2002, presenting papers on -teaching Python, serving as track chair at EuroPython and OSCON, writing and -technical-editing books and articles. Before 2002, Instruction Administrator for -a public transport company, managing projects, teaching, developing course -material, creating websites. Earlier, Office Manager for a small training -company, creating and editing training documents and administering the firm's NT -LAN. Up to 1994, Distribution Coordinator for a large Financial Services -company, providing field communications and training for a sales force of 7500. -In the 1980's, served as Psychological Operations Specialist in the US Army, -receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. - -Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics and -Informatics at the Free University of Berlin, diploma on Adaptive Huffman -Coding. He has been working for Pharmaceutic Research companies for more than 10 -years, doing statistical evaluations, EEG and EMG recording, signal analysis, -networking, report generation and automation. He wrote his first multitasking -system in 1985 for DOS, continuous 32 channel EEG recording and visualisation on -a 286 machine. Later, he worked on Netscape plugins, document automation, Web -and database applications. Converted to Python in 1997, founded Python Starship, -became Python core developer. He translates Python books into German, is the -author of the Stackless Python extension to be merged into PyPy, and belongs to -the founders of the PyPy project. - -Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the -Technical University in Berlin. He is going to write his diploma thesis on Pypy -- about implementing Scheme on top of Pypy. He has a strong background about web -programming (python, zope, perl), now is working in dai-lab on the Technical -University and is reimplementing the parser and compiler for the agent- -controling language JADL. His passions: programming, traveling, philosophy. -XXX will be augmented a little XXX Deleted: /pypy/trunk/doc/funding/B4.4_quality_SMEs.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.4_quality_SMEs.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,135 +0,0 @@ -Quality of partnership, involvement of users and SMEs -===================================================== - -Roles ------ -While all the partners except Changemaker have staff with Python -programming skills that will enable them to fulfill computer program -development in the various tasks of the project, each partner brings -unique skills or functions, without which the project is not complete. - -DFKI -++++ -has pervious experience of being a project coordinator in EU projects, -ensuring smooth communication between the project and the FP6 project -officer. - -Max Planck Institut -+++++++++++++++++++ -will showcase how to apply the results of the project in the research -environment. The insitute currently leverages the speed of development -with Python but would be able to solve a wider range of problems with -a faster version of the language. - -University of Southampton -+++++++++++++++++++++++++ -is the employer of Armin Rigo, who is the lead architect of the whole -project as well as the author of Psyco, the blueprint for how to do -optimisation in Pypy. - -FIXME: Where does Samuele go? -+++++++++++++++++++++++++++++ -Samuele Pedroni is the main developer of Jython, an implementation of -Python that uses the Java Virtual Machine. He is an expert on how to -generate code for different virtual machines. He brings experience in -this field and a creative mind to the project. - -Strakt -++++++ -brings manangement knowhow and entrepreneurial skills to the project -as well as showcasing how to apply the results of the project in a -major business application. - -Strakt will also bring Tim Peters to the project. Tim has for several -years been a core developer of the present major implementation of -Python, what we call CPython. Apart from being an outstanding -programmer, Tim has intimate knowledge about all the details of the -Python language definition. - -With 12 full time and 6 part time employees, Strakt is an SME -representative. - -Alex Martelli (FIXME: Where does Alex go? PBF?) -+++++++++++++++++++++++++++++++++++++++++++++++ - -Being a prolific writer and popular speaker as well as a Python -programmer, Alex is uniquely suited for widely disseminating the -progress and the results of the project. - -Technischen Universit?t Berlin -++++++++++++++++++++++++++++++ -will have Tomasz Meka doing his diploma work for a Computer Science -degree. We believe that the Pypy project opens up new avenues for -studies and research from undergraduate level to advanced researchers. -We hope to verify this through Tomeks work in the project. - -Changemaker -+++++++++++ -adds rare project management skills by managing not only the project, -but the learning processes of the project participants as well as the -group dynamics between the different members. We intend to document -and disseminate the management of change throughout the project. -Changemaker is also the contact point for Axis Communications, who -will showcase how to integrate Pypy in an embedded device. - -Logilab -+++++++ -focuses on constraints and aspect oriented programming and will verify -that Pypy is extensible with specialised language features. - -With 6 full time employees, Logilab is an SME representative. - -Python Business Forum -+++++++++++++++++++++ -is an industry organisation for companies where Python is a central -part of the business model. The PBF is registered as a non-profit -organisation under Swedish law. It has approximately 50 SME -members. The Forum has a board, which focuses on administration and -strategic issues, while the main activities occur in Special Interest -Groups (SIGs). Each SIG controls its own activities but reports to the -board in financial matters. - -The PBF will form a Pypy SIG with **Holger Krekel** as chairman to -handle its involvement in the project. - -The PBF brings a number of SME parties to the project who will be -eager to apply Pypy to their various products. The selection of which -products and companies that should do validations will be made later -in the project, since it is impossible to tell which ones will produce -the most useful results when validations starts some 24 months from -now. - -**Holger Krekel** will also be an active PBF representative in the -project, with a focus on devlopment, packaging and dissemination -tools. He will also be a main contributor in matters of systems -architecture. - -**Christian Tismer** will join the project under the auspices of the -PBF. Chritian is the developer of Stackless Python, which is the -blueprint for how we intend to implement persistant threads. - -Ability to deliver ------------------- -DFKI, Logilab, Max Planck Intitut and University of Southampton have -already successfully participated in EU projects, so their ability to -deliver on another project should not be in doubt. - -Strakt, Tismer and Martelli have all recently produced substantial -products, which show their capability to handle large undertakings. - -Krekel has demonstrated his ability to deliver results during the -prototype phase that has preceeded this application. For the rest of -the PBF, it should be noted that the chairman of the SIG is a member -of the project, as well as 3 of the members of the PBF board; -Creighton, Hall?n and Martelli. The stated merits of these people and -their respective organisations should vouch for the PBF fulfilling its -undertakings. - -Changemaker has a number of documented successful projects. Further -details can be found under B 5.1. - -A special circumstance is that several of the project participants -have already collaborated in developing a proof of concept for -Pypy. This means that the ability to collaborate and to deliver -results has already been tested under circumstances that are very -similar to what they will be during the project. Deleted: /pypy/trunk/doc/funding/B4.5_resources.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.5_resources.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,9 +0,0 @@ -B.4.5 Resources to be deployed - -Show how the project will mobilise the critical mass of resources -(personnel, equipment, finance...) necessary for success. - -FIXME_LAURA: i (holger) moved the sprint information now completly -to B5.* because i don't think it belongs here. Can you restate what -is needed here? A description of the involvement of the Python community -and the audience we are reaching and who will be contributing? Deleted: /pypy/trunk/doc/funding/B4.6_finance.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.6_finance.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,4 +0,0 @@ -B.4.6 Overall Financial Plan - -Show that the overall financial plan for the project is adequate. -FIXME_LAURA Deleted: /pypy/trunk/doc/funding/B4.7_effort_form.txt ============================================================================== --- /pypy/trunk/doc/funding/B4.7_effort_form.txt Sun Oct 12 13:32:18 2003 +++ (empty file) @@ -1,49 +0,0 @@ -FIXME_NICO (get from Gantt?) - -In B4.7 (below) do not identify any activities as "demonstration" -i.e. leave that section blank. - -B.4.7 STREP Project Effort Form - -Full duration of project (insert person-months for activities in which -partners are involved) - -Project acronym - - - - Short Names - Partner 1 - Partner 2 - Partner 3 - Partner 4 - Partner 5 - etc - TOTAL PARTNERS - - - WP name - WP name - WP name - etc - Total research/innovation - - - - Demonstration activities - WP name - WP name - WP name - etc - Total demonstration - - - - Consortium management activities - WP name - WP name - WP name - etc - Total management - - - TOTAL ACTIVITIES Added: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 13:32:18 2003 @@ -0,0 +1,400 @@ +The consortium and project resources +===================================== + +FIXME_NICO FIXME_LAURA FIXME_HOLGER check below information + +**DFKI** + + Role: Project Coordinator & Technical Partner + Country: Germany + Contact: Alastair Burt + + Skills, Commitment, Resources: + + +**AB Strakt** + + Role: Project Management & Technical Partner + Country: Sweden + Contact: Jacob Hall?n + + Skills, Commitment, Resources: + + +**University of Southampton** + + Role: Technical Partner + Country: United Kingdom + Contact: Armin Rigo + + Skills, Commitment, Resources: + + +**Python Business Forum** + + Role: Technical Partner + Country: Europe + Contact: Holger Krekel + + Skills, Commitment, Resources: + +**Logilab** + + Role: Technical Partner + Country: France + Contact: Nicolas Chauvat + + Skills, Commitment, Resources: advanced computing, artificial intelligence, + applying new techniques to solve industrial clients' problems. XXXFIXME + + +interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, +anna ravenscroft, gunter janton, samuele pedroni +FIXME_LAURA + + +Sub-contracting +--------------- + +I am going to run my accounting figures though the AB Strakt +bookkeeper, as part of my management duties. She is a contractor +who consults regularly to AB Strakt. Aside from that I don't +see that we will have any need for sub-contracting. Possibly to get +final stamps of approval on the books from KPMG our accounting +firm. This is the sort of thing that AB Strakt does all the time. +FIXME_LAURA -- discuss role of PBF in mitigating Samuele's and Tim's +problem? phone call to Belgium to ask this happening. + +Other countries +--------------- + +FIXME LAURA + +Description of the participants +---------------------------------- + +Jacob Hall?n, 45, comes to his position as co-founder and CTO of AB Strakt from +being a Technical Manager and international standards expert at the LIBRIS +Department of the Royal Library. He was the LIBRIS representative in the EU +funded ONE-2 project. Before this, he was the CEO of NetGuide Scandinavia AB, +one of the first internet services companies in Sweden. Mr Hall?n has also been +a Computer Science and Programming teacher and an army officer. Throughout his +career he has been managing projects varying from 1200 participant conventions +down to 3 person development projects. He has also done electronics development +and microcontroller programming, winning two innovation awards in the process. +Mr Hall?n is chairman of the Python Business Forum. + +Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher at the +University of Southampton (UK). He studied Mathematics at the University of +Lausanne and obtained his Ph.D. in Logic and Set Theory at the Free University +of Brussels. He is the main author of several commercial, open source and +research programs and contributed to a number of them, most notably in the +fields of computer graphics and 3D modelling, education, and programming +languages. He recently developed in the Psyco project novel techniques for +efficient interpretation of dynamic programming languages. He is also a member +and contributor of the TUNES Project for a Free Reflective Computing System. + +Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead +programmer producing games for Electronic Arts. He went to university, gave +courses in Prolog, C, Assembler, mathematics and assisted in numerical +computing. He got his degree "magna cum laude". He consulted for Volkswagen, +large German banks and the chairman of the EU-founded CEN/ISSS workshop who +contracted him to prototype integration of OpenSource software. He implemented +an opensource transaction service on top of TAO/CORBA and published several +articles about Free projects. In 2001 he joined the Python community, published +an interactive tool, took part in Zope3 development and some of the first coding +Sprints in Europe and became one of the initiators of the PyPy project. + +Tim Peters: Over 20 years top-tier industrial experience in programming language +implementation and high-performance computing. 1979-1988, Cray Research: +Compiler development, Group leader--common back-end optimization group. 1988- +1994, Kendall Square Research (KSR), Compiler and Library development, +Architecture and FPU design. 1994-2000, Dragon Systems: Developed core speech +recognition system for portable devices; scalable, large-scale telephone speech +recognition; and award-winning PhoneQuery Toolkit product. 2000 to present: +Zope Corporation: Development--Core technologies underlying Zope's leading +content management framework; Python core. Python: first port of Python to 64- +bit platform (KSR-1); POSIX pthreads support; algorithmic and optimization +expertise; elected Director of Python Software Foundation (PSF) since its +inception. + +Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor of +*Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, +Python langauge developer, PBF board member. Currently works for AB Strakt, +developing the CAPS framework. Also consults for other firms on Python and O-O +design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab +(think3, Inc): innovative component architecture for web-enabling existing GUI- +oriented apps; Event Manager, interfacing, proprietary protocols. Taught +Computer Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM +Research: 3 Outstanding Technical Achievement awards, voice recognition, image +processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 +magna cum laude. + +Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His +thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as +teaching/published research assistant at the Institute of Theor. CS of the ETHZ. +He was designer on the state-of-the-art genetic programming framework for Java +JRGP, becoming involved in Jython (the industry-strength Java re-implemetation +of Python). He is now a main developer of Jython, working on internals, +compilers and Java integration, and was author of Jython Essentials (O'Reilly, +2002). He is also involved on the ongoing design of Python. For his +contributions to Python/Jython he has been nominated member of the PSF. He +brings to the project his know-how on languages, re-implementation/design of +Python, reflection, lookup and dispatch optimization. + +Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer of the +PBF. Studied Physics (csc minor) at the University of Toronto, and later +instructed there in Physics and Computer Science, while simultaneously working +for the Canadian Armed Forces, teaching programming to non-programmers, and +assisting with research in Human Factors Engineering and Learning Techniques. +Moving to the US, she consulted for software companies and government +institutions, taught Unix, project management, and interpersonal relations, and +wrote a geophysical simulation system. She brings strong connections in +financial and government sectors, and was an Open Source advocate before the +term was coined. Her passions: programming, empowerment of average citizens, +and the Open Society. + +Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in +Sweden. She was recruited into the IT-industry to work as a project manager for +large scale education projects for the company NetGuide Scandinavia, Gothenburg. +Since 1998 she has been working with education and development project +management and management of education and consultant departements, implementing +Open Source strategies and Agile development methods. Beatrice also teaches +project management, leadership and communication courses for Learning Tree +International. + +Anna Ravenscroft: Started programming with Python in 2002, presenting papers on +teaching Python, serving as track chair at EuroPython and OSCON, writing and +technical-editing books and articles. Before 2002, Instruction Administrator for +a public transport company, managing projects, teaching, developing course +material, creating websites. Earlier, Office Manager for a small training +company, creating and editing training documents and administering the firm's NT +LAN. Up to 1994, Distribution Coordinator for a large Financial Services +company, providing field communications and training for a sales force of 7500. +In the 1980's, served as Psychological Operations Specialist in the US Army, +receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. + +Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics and +Informatics at the Free University of Berlin, diploma on Adaptive Huffman +Coding. He has been working for Pharmaceutic Research companies for more than 10 +years, doing statistical evaluations, EEG and EMG recording, signal analysis, +networking, report generation and automation. He wrote his first multitasking +system in 1985 for DOS, continuous 32 channel EEG recording and visualisation on +a 286 machine. Later, he worked on Netscape plugins, document automation, Web +and database applications. Converted to Python in 1997, founded Python Starship, +became Python core developer. He translates Python books into German, is the +author of the Stackless Python extension to be merged into PyPy, and belongs to +the founders of the PyPy project. + +Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the +Technical University in Berlin. He is going to write his diploma thesis on Pypy +- about implementing Scheme on top of Pypy. He has a strong background about web +programming (python, zope, perl), now is working in dai-lab on the Technical +University and is reimplementing the parser and compiler for the agent- +controling language JADL. His passions: programming, traveling, philosophy. +FIXME XXX will be augmented a little XXX + +Quality of partnership, involvement of users and SMEs +----------------------------------------------------- + +Roles ++++++ + +While all the partners except Changemaker have staff with Python +programming skills that will enable them to fulfill computer program +development in the various tasks of the project, each partner brings +unique skills or functions, without which the project is not complete. + +DFKI +++++ +has pervious experience of being a project coordinator in EU projects, +ensuring smooth communication between the project and the FP6 project +officer. + +Max Planck Institut ++++++++++++++++++++ +will showcase how to apply the results of the project in the research +environment. The insitute currently leverages the speed of development +with Python but would be able to solve a wider range of problems with +a faster version of the language. + +University of Southampton ++++++++++++++++++++++++++ +is the employer of Armin Rigo, who is the lead architect of the whole +project as well as the author of Psyco, the blueprint for how to do +optimisation in Pypy. + +FIXME: Where does Samuele go? ++++++++++++++++++++++++++++++ +Samuele Pedroni is the main developer of Jython, an implementation of +Python that uses the Java Virtual Machine. He is an expert on how to +generate code for different virtual machines. He brings experience in +this field and a creative mind to the project. + +Strakt +++++++ +brings manangement knowhow and entrepreneurial skills to the project +as well as showcasing how to apply the results of the project in a +major business application. + +Strakt will also bring Tim Peters to the project. Tim has for several +years been a core developer of the present major implementation of +Python, what we call CPython. Apart from being an outstanding +programmer, Tim has intimate knowledge about all the details of the +Python language definition. + +With 12 full time and 6 part time employees, Strakt is an SME +representative. + +Alex Martelli (FIXME: Where does Alex go? PBF?) ++++++++++++++++++++++++++++++++++++++++++++++++ + +Being a prolific writer and popular speaker as well as a Python +programmer, Alex is uniquely suited for widely disseminating the +progress and the results of the project. + +Technischen Universit?t Berlin +++++++++++++++++++++++++++++++ +will have Tomasz Meka doing his diploma work for a Computer Science +degree. We believe that the Pypy project opens up new avenues for +studies and research from undergraduate level to advanced researchers. +We hope to verify this through Tomeks work in the project. + +Changemaker ++++++++++++ +adds rare project management skills by managing not only the project, +but the learning processes of the project participants as well as the +group dynamics between the different members. We intend to document +and disseminate the management of change throughout the project. +Changemaker is also the contact point for Axis Communications, who +will showcase how to integrate Pypy in an embedded device. + +Logilab ++++++++ +focuses on constraints and aspect oriented programming and will verify +that Pypy is extensible with specialised language features. + +With 6 full time employees, Logilab is an SME representative. + +Python Business Forum ++++++++++++++++++++++ +is an industry organisation for companies where Python is a central +part of the business model. The PBF is registered as a non-profit +organisation under Swedish law. It has approximately 50 SME +members. The Forum has a board, which focuses on administration and +strategic issues, while the main activities occur in Special Interest +Groups (SIGs). Each SIG controls its own activities but reports to the +board in financial matters. + +The PBF will form a Pypy SIG with **Holger Krekel** as chairman to +handle its involvement in the project. + +The PBF brings a number of SME parties to the project who will be +eager to apply Pypy to their various products. The selection of which +products and companies that should do validations will be made later +in the project, since it is impossible to tell which ones will produce +the most useful results when validations starts some 24 months from +now. + +**Holger Krekel** will also be an active PBF representative in the +project, with a focus on devlopment, packaging and dissemination +tools. He will also be a main contributor in matters of systems +architecture. + +**Christian Tismer** will join the project under the auspices of the +PBF. Chritian is the developer of Stackless Python, which is the +blueprint for how we intend to implement persistant threads. + +Ability to deliver +++++++++++++++++++ + +DFKI, Logilab, Max Planck Intitut and University of Southampton have +already successfully participated in EU projects, so their ability to +deliver on another project should not be in doubt. + +Strakt, Tismer and Martelli have all recently produced substantial +products, which show their capability to handle large undertakings. + +Krekel has demonstrated his ability to deliver results during the +prototype phase that has preceeded this application. For the rest of +the PBF, it should be noted that the chairman of the SIG is a member +of the project, as well as 3 of the members of the PBF board; +Creighton, Hall?n and Martelli. The stated merits of these people and +their respective organisations should vouch for the PBF fulfilling its +undertakings. + +Changemaker has a number of documented successful projects. Further +details can be found under B 5.1. + +A special circumstance is that several of the project participants +have already collaborated in developing a proof of concept for +Pypy. This means that the ability to collaborate and to deliver +results has already been tested under circumstances that are very +similar to what they will be during the project. + + + +Resources to be deployed +------------------------ + +Show how the project will mobilise the critical mass of resources +(personnel, equipment, finance...) necessary for success. + +FIXME_LAURA: i (holger) moved the sprint information now completly +to B5.* because i don't think it belongs here. Can you restate what +is needed here? A description of the involvement of the Python community +and the audience we are reaching and who will be contributing? + +Overall Financial Plan +---------------------- + +Show that the overall financial plan for the project is adequate. +FIXME_LAURA +FIXME_NICO (get from Gantt?) + + +STREP Project Effort Form +------------------------- + +Full duration of project (insert person-months for activities in which +partners are involved) + +Project acronym - + + + Short Names + Partner 1 + Partner 2 + Partner 3 + Partner 4 + Partner 5 + etc + TOTAL PARTNERS + + + WP name + WP name + WP name + etc + Total research/innovation + + + + Demonstration activities + WP name + WP name + WP name + etc + Total demonstration + + + + Consortium management activities + WP name + WP name + WP name + etc + Total management + + + TOTAL ACTIVITIES From lac at codespeak.net Sun Oct 12 13:37:16 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 13:37:16 +0200 (MEST) Subject: [pypy-svn] rev 1757 - pypy/trunk/doc/funding Message-ID: <20031012113716.698BA5A442@thoth.codespeak.net> Author: lac Date: Sun Oct 12 13:37:15 2003 New Revision: 1757 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: tiny changes get in before Samuele does things Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sun Oct 12 13:37:15 2003 @@ -361,11 +361,11 @@ ------------ Our first goal in exploitation will be to make Python the reference -language. Our market, there , are all existing Python programmers. -Just how many are there? +language. Our market, then is all existing Python programmers. +_Just how many are we?_ It is always difficult to measure how many people are using a -programming language, but of course, we try. Python is generally +programming language, but here is one try. Python is generally ranked the sixth most popular computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to have more users. @@ -403,7 +403,8 @@ For what its worth, there are about 600,000 http visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the -language. Number of unique IP addresses per month is about 350,000 at +language, as opposed to lost souls, looking for python.com, a porn +site. Number of unique IP addresses per month is about 350,000 at this point, and has been rising steadily from about 250,000 this time last year. From pedronis at codespeak.net Sun Oct 12 13:57:43 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 13:57:43 +0200 (MEST) Subject: [pypy-svn] rev 1758 - pypy/trunk/doc/funding Message-ID: <20031012115743.5C21B5A442@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 13:57:42 2003 New Revision: 1758 Modified: pypy/trunk/doc/funding/B3.allmerged.txt Log: fixed ReST Modified: pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- pypy/trunk/doc/funding/B3.allmerged.txt (original) +++ pypy/trunk/doc/funding/B3.allmerged.txt Sun Oct 12 13:57:42 2003 @@ -3,7 +3,7 @@ FIXME think about where to include Logilab and DFKI references Potential impact -+++++++++++++++++++ +--------------------------------------------------------------------------- The successful execution of the PyPy project will deliver a practical usefull implementation of a Very-High-Level, Object-Oriented, Open Source programming @@ -42,7 +42,7 @@ See the section on Exploitation where this is discussed at length. Contributions to Standards -========================== ++++++++++++++++++++++++++++ There are currently two implementations of Python in common use. The first one, which we will call CPython, but which is what the world @@ -111,7 +111,7 @@ reference langauge. We merely need to create it. Strategic impact -================ ++++++++++++++++++ PyPy will have a significant strategic impact throughout the IT sector. It produces immensely useful, practical results which shall @@ -156,7 +156,7 @@ faster Python would have more appeal. Strategic Impact of Open Source -------------------------------- +================================ Open source has now reached an installed application base sufficient to become widely recognised as a viable business standard, especially in @@ -224,7 +224,7 @@ can only improve the trade balance. European Dimension ------------------- +=================== PyPy is an extremely high-profile project, as is only right since we intend to capture the estimated 175,000 Python users and make them our @@ -253,7 +253,7 @@ Python. Innovation Related Activities ------------------------------ +++++++++++++++++++++++++++++++ This is an Open Source Project. Thus complicated issues involving intellectual property simply do not arise. The knowledge produced @@ -308,7 +308,8 @@ copyright to itself. In either case, no management is necessary. Dissemination -------------- +++++++++++++++ + To succesfully disseminate knowledge from the PyPy project the project needs to have good steadfast routines for documenting and interacting with the project. The project management team (project manager and @@ -317,32 +318,32 @@ Dissemination will consist of, but not be limited to --- The key activities in the project and the development process are the +* The key activities in the project and the development process are the "Sprints". These are open forums to which we actively invite members from both commercial and research oriented organisations to actively participate --- since PyPy as a project has goal of a high transparancy (see B5) +* since PyPy as a project has goal of a high transparancy (see B5) documentation and information as well as contact with project members will be easy to reach for external interested potential stakeholders --- the PyPyproject will on a regular basis, during sprints, evaluate and +* the PyPyproject will on a regular basis, during sprints, evaluate and gather knowledge about the process development and the develoment process and results. Every sixth months the project will go through a project review workshop in which specific emphasis will be put on knowledge trawling and dissemination strategies --- a PyPy newsletter will be produced for external organisations/commercial +* a PyPy newsletter will be produced for external organisations/commercial enterprises that will be sent out after each "sprint", keeping them updated on project process and development progress. The assistant project manager will be responsible for this. -FIXME coordinate with Alex on this. The commercial activities need to +* FIXME coordinate with Alex on this. The commercial activities need to be divided into 'techie' 'financial' and 'other' and WP 10 is about making these things. So Project Management can see that it is done, but can only help in making the stuff. --- to ensure that interested external parties will be able to use knowledge +* to ensure that interested external parties will be able to use knowledge aquired in the PyPyproject we will host two workshops during the project, one after 6 months and the first review workshop and one at the end of the project in which we actively work with interested parties to @@ -358,7 +359,7 @@ Developer European Meeting) Exploitation ------------- ++++++++++++++ Our first goal in exploitation will be to make Python the reference language. Our market, then is all existing Python programmers. @@ -484,4 +485,13 @@ implementing several applications using the high-performance PyPy interpreter. - \ No newline at end of file + + + + + + + + + + From pedronis at codespeak.net Sun Oct 12 13:58:28 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 13:58:28 +0200 (MEST) Subject: [pypy-svn] rev 1759 - pypy/trunk/doc/funding Message-ID: <20031012115828.8A2415A442@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 13:58:27 2003 New Revision: 1759 Added: pypy/trunk/doc/funding/B3.impact.txt - copied unchanged from rev 1758, pypy/trunk/doc/funding/B3.allmerged.txt Removed: pypy/trunk/doc/funding/B3.allmerged.txt Log: renamed B3.allmerged.txt to B3.impact.txt Deleted: /pypy/trunk/doc/funding/B3.allmerged.txt ============================================================================== --- /pypy/trunk/doc/funding/B3.allmerged.txt Sun Oct 12 13:58:27 2003 +++ (empty file) @@ -1,497 +0,0 @@ -FIXME_LAURA: currently writing this -FIXME_NICO FIXME_ALASTAIR : proof-read it -FIXME think about where to include Logilab and DFKI references - -Potential impact ---------------------------------------------------------------------------- - -The successful execution of the PyPy project will deliver a practical usefull -implementation of a Very-High-Level, Object-Oriented, Open Source programming -language. - -This will impact software development in several important ways. - - - The cost of software development will diminish. - - - The time to market will be reduced. - - - The cost of software maintenance will be reduced. - - - Reduce barriers to market a product. - - -The development methods of the PyPy project will prove that using Sprints, -pair programming and test driven development, results in : - - - Broader understanding of the code base among developers - - - Rapid developments from ideas to working code - - - Sustainable project progress through unittesting - -The cost of software development is essentially labor costs, time to -market and costs of software tools. Having a (free) flexible VHLL will -ease the development through the fact that problems are solved closer -to the abstraction level they are formulated. This will greatly -improve the productivity of the individual programmer. - -The most obvious way in which we will have an impact is that we will -produce a version of the language which, being superior to anything which -has gone before, will be extremely well used. To that end, our first -target group is the existing community of Python/Jython programmers. -See the section on Exploitation where this is discussed at length. - -Contributions to Standards -+++++++++++++++++++++++++++ - -There are currently two implementations of Python in common use. The -first one, which we will call CPython, but which is what the world -knows as Python, is a C implementation of the Python Programming -language which compiles to its own virtual machine. The second one is -Jython, a pure-Python implementation which compiles to the Java -virtual machine. There is no ANSI standard or similar for Python. -Right now the de-facto standard for the programming language is -'whatever CPython does'. This is far from ideal, and questions arise, -especially from the developers of Jython as to which CPython language -behaviours are essential to the Python language itself, and which are -mere accidents of this particular implementation. - -For example, the garbage-collection behavior of CPython is implemented -by reference-counting ensuring that an object is finalized as soon as -the last reference to it goes away. That would be extremely -inconvenient (close to impossible) to implement on standard Java -Virtual Machines, which have a deliberately under-specified garbage -collector (it can collect anything it pleases whenever it pleases...). -In this case, the Jython designers had to obtain an explicit ruling -from Guido van Rossum, Python's designer -- who ruled that the -behavior of CPython was 'accidental' in this case, and not intrinsic -to the Python language specification. - -Guido van Rossum has expressed interest in giving PyPy the status of -'implementation standard' (executable specification) of the Python -programming language. PyPy's ObjectSpaces flexibility will be crucial -in distinguishing "accidental" from "designed-in" characteristics. - -(FIXME: I sent Guido mail asking for something quotable. We will see -if he replies. -- He did. He will say whatever we like, more or less. -What should we ask him to say?) - -In order to do this we will have to do something which is called -'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design -document providing information to the Python community, or describing -a new feature for Python. There are two kinds of PEPs. A Standards -Track PEP describes a new feature or implementation for Python. An -Informational PEP describes a Python design issue, or provides general -guidelines or information to the Python community, but does not -propose a new feature. If we proposed to make PyPy the reference -standard of the Python language, we would, obviously, have to submit a -Standards Track PEP. - -The complete details of how to write a PEP are themselves an -Informational PEP -- PEP #1 in fact. A copy of PEP #1 is provided -for convenience in this appendix: - -FIXME include http://www.python.org/peps/pep-0001.html - -PEPs are reviewed by Guido van Rossum, the language author, and his -chosen consultants, who may accept or reject a PEP or send it back to -the author(s) for revision. - -If Guido van Rossum accepts the PEP, then once the reference -implementation is complete and accepted (again by Guido van Rossum), -the status will be changed to 'Accepted and Final' In our case, we -wouldn't even write the PEP without having a complete reference -implementation, since what we would be proposing is to make PyPy and -not CPython the complete reference implementation of the language. -Thus the expression of interest from Guido van Rossum is of extreme -significance. It is very likely, if all the goals described in the -project PyPy will become the standard reference implementation of the -Python language. In other words, our problems are technical, and not -political. The political will is already there to make PyPy the -reference langauge. We merely need to create it. - -Strategic impact -+++++++++++++++++ - -PyPy will have a significant strategic impact throughout the IT -sector. It produces immensely useful, practical results which shall -be immediately exploited by Python developers world-wide. While it -addresses issues which have hitherto mostly remained the special -province of academia, and significantly enhances the State-of-the-Art, -it is not a project that will only satisfy intellectual curiosity. - -We intend to make a new reference version of the Python Programming -Language, which is faster, more flexible, more extensible, and which -gives more control to the individual programmer as to how it is -deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. -Or one with speed enhancements only possible because there is a huge -amount of memory available. Or a PyPy interpreter which will be -executed on several machines but offer a single distributed computation -space and balances the load by moving execution threads around. We can -produce Object Spaces which implement Logic Programming, Aspect Oriented -Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular -languages do not support them. - -An implementation of the language with substantial improvements will -have an immediate direct effect on Eropean competitiveness. Moreover, -the planned improvements directly target the handheld, mobile, and -embedded device sectors, where Europe is the acknowledged world -leader. People working in such industries have long desired a high -level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application -programmers to configure Python runtime environments to suit their -particular hardware characteristics -- for instance, a version that -runs in a minimal amount of memory, or a version that can exploit a -huge amount of memory to achieve the highest performance speed. - -Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. Moreover, some -companies resist using Python because of its speed. If execution -speed, rather than development speed is of paramont importance to -you, then Python is currently not a very good language choice. A -faster Python would have more appeal. - -Strategic Impact of Open Source -================================ - -Open source has now reached an installed application base sufficient to -become widely recognised as a viable business standard, especially in -Europe. This has no doubt been aided by the proprietary alternatives being -intellectual properties of large USA based companies and the growing -awareness of the benefits that open source can provide. The European Union, -compromising of heterogeneous distinct regions with different availability -of economic resources, is well positioned to take advantage of the open -source momentum. One reason that open source is becoming so appealing is due -to its equal suitability for projects based on diverse capital budgets. - -Python is an open source, easy to learn, easy to use, programming language -that is readily accessible to a broad user base ranging from education -establishments through to large commercial enterprises. This project aims at -building upon the inherent nature of Python to ensure its longevity in the -commercial and research marketplace. This will maximise the return of the -existing and future capital investment in this technology and ensure Python -becomes one of the most cost effective technology platforms available. - -Potential Impact on the Balance of Trade -======================================== -One of the greatest threats to European competitiveness -is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being -spent in the United States is money that is not being spent here, -although that affects matters as well. There are two more serious -risks. The first is a threat in the present. - -Any company which writes its software in a proprietary, closed source -language is dependent upon its software provider. If you have a bug, -you must wait for them to fix it. If this bug is not a high priority -for them, you can wait a long time. If you have access to the source -you always have the option of fixing it yourself, or hiring somebody -else to do that. But this is not the greatest of your worries. You -are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical -one. In 2002, Microsoft announced that it would no longer be -supporting Visual Basic 6.0 after the year 2005. All Visual Basic -Developers have been told to convert their code to run under -Microsoft's new .NET framework. Before that, in 2001, Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. No migration path was specified. Microsoft is making -these decisions because they make business sense for Microsoft, -regardless of the effects on European software developers. - -Right now Python is the sixth most popular programming language in the -world. Java and Visual Basic, ranked 1 and 2, are closed source -proprietary American products. The number one reason that is cited by -Java users as to 'why they don't use Python' is that it is too slow. -PyPy will fix this. The Visual Basic programmers are in a more -interesting position. Microsoft, in its wisdom, has decided end -support of their current platform, Visual Basic 6.0. After the year -2005, they will have to move to Microsoft's .NET. This is a -tremendous opportunity for us. They're angry as anything now, and -tempted to move, not to .NET, but to an Open Source language, just so -that they can have control over their own destiny and indicate their -displeasure with Microsoft at the same time. - -Every Java and VB user that switches to Python does not pay license -fees to Sun or Microsoft and helps the European balance of Trade. - -Of course, all the PBF members are predicting that an improved -Python will improve their sales, both domestic and foreign, which -can only improve the trade balance. - -European Dimension -=================== - -PyPy is an extremely high-profile project, as is only right since we -intend to capture the estimated 175,000 Python users and make them our -user-base. Consequently, it is essential that we have the full -support of the International Python community. Our success in that -regard was more fully spoken about in B3.1, International Standards, -but suffice to say that the only possible dimensions for this project -was 'Europe wide' or 'World Wide'. You could not find the expertise -we needed in one country, and even if you could, you could not attain -international acceptance without involving the top members of the -Python community. At a smaller scale, we would only 'fork the -project' -- make a local version which is of limited use, while the -main line project develops along without you. At best we would have a -ghetto. At the worst we would have two hostile camps slinging insults -at each other over which 'was the real Python'. We have missed all of -these problems by carefully making the PyPy project sufficiently -international, by discussing this proposal for nearly a year at -international conferences, and by inviting non-European Python -luminaries to our week-long intensive code-writing meetings called -'Sprints'. By producing a prototype in 4 coding Sprints (spread out -over half a year) held in locations in Hildesheim, Germany; -Gothenburg, Sweden; Louvain-La-Neuve, Belgium; and Berlin, Germany. -while discussing this all the while on mailing lists and on our -website, we have made certain that we have the proper dimension for -our project to succeed, and become the new reference language for -Python. - -Innovation Related Activities -++++++++++++++++++++++++++++++ - -This is an Open Source Project. Thus complicated issues involving -intellectual property simply do not arise. The knowledge produced -by this project, every deliverable, is listed at Dissemination level -Public. We are utterly committed to transparency and open dissemination, -and as such will have all of our code available for nightly downloads, -our papers freely available on the PyPy websites, and freely available -for other people to link to. All Consortium members will have signed -a consortium agreement, asserting that all code will be released -under the MIT Open Source License, approved by both the Open Source -Initiative and the Free Software Foundation. The MIT license is here. - -:: - - The MIT License - - Copyright (c) - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - -Now you know why we selected it. It fits on less than half a page, and -lets anybody do whatever they like with the software. This does tend -to eliminate any contraversy, since there are no clauses that can be -interpreted in varying fashions. - -Management of this intellectual property consists of sticking a note on -your website, or wherever you keep your sources, and periodically running -a program, especially before software releases, that sticks an ugly -copy of the license at the top of every file that you release. - -The only other intellectual property which we will produce are -scientific papers, talks, and the like. They will all be freely -available. Copyright shall rest in the authors, unless somebody -gives a paper to one of the scientific journals that keeps all -copyright to itself. In either case, no management is necessary. - -Dissemination -++++++++++++++ - -To succesfully disseminate knowledge from the PyPy project the project -needs to have good steadfast routines for documenting and interacting with -the project. The project management team (project manager and -assisting project manager) will be responsible for overseeing -dissemination tasks and activities. - -Dissemination will consist of, but not be limited to - -* The key activities in the project and the development process are the - "Sprints". These are open forums to which we actively invite members from - both commercial and research oriented organisations to actively - participate - -* since PyPy as a project has goal of a high transparancy (see B5) - documentation and information as well as contact with project members - will be easy to reach for external interested potential stakeholders - -* the PyPyproject will on a regular basis, during sprints, evaluate and - gather knowledge about the process development and the develoment - process and results. Every sixth months the project will go through a - project review workshop in which specific emphasis will be put on - knowledge trawling and dissemination strategies - -* a PyPy newsletter will be produced for external organisations/commercial - enterprises that will be sent out after each "sprint", keeping them - updated on project process and development progress. The assistant - project manager will be responsible for this. - -* FIXME coordinate with Alex on this. The commercial activities need to - be divided into 'techie' 'financial' and 'other' and WP 10 is about - making these things. So Project Management can see that it is done, - but can only help in making the stuff. - -* to ensure that interested external parties will be able to use knowledge - aquired in the PyPyproject we will host two workshops during the - project, one after 6 months and the first review workshop and one at the - end of the project in which we actively work with interested parties to - analyze potential usage of PyPy process and prototype - -We will also partake in the following official events, forum, conferences -to spread information about the ongoing project, its unique process and -technological impact: - -FIXME: ADD MORE conferences - -EuroPython, OSCON, PyCon, FOSDEM (Free and Open Source -Developer European Meeting) - -Exploitation -+++++++++++++ - -Our first goal in exploitation will be to make Python the reference -language. Our market, then is all existing Python programmers. -_Just how many are we?_ - -It is always difficult to measure how many people are using a -programming language, but here is one try. Python is generally -ranked the sixth most popular computer language in the world. Only -Java, Visual Basic, C, C++, and Perl are believed to have more users. - -The Python FAQ, available at the python language home site of -python.org says:: - - 2.1. How many people are using Python? - - Certainly thousands, and quite probably tens of thousands of users. - More are seeing the light each day. The comp.lang.python newsgroup is - very active, but overall there is no accurate estimate of the number - of subscribers or Python users. Jacek Artymiak has created a Python - Users Counter; you can see the current count by visiting - http://www.wszechnica.safenet.pl/cgi-bin/checkpythonuserscounter.py - - Jacek's counter has more than 43 000 registered users. - -Googling for 'python programming' gives 1,540,000 hits. ('Python' gives -ten million, but many of those Pythons are the actual reptiles.) - -Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', -and in some niches, languages such as PHP, Perl and SQL are popular, -but Python is vastly bigger than the more obscure languages such -as Haskell, OCaml, Smalltalk, ADA, Ruby etc. - -Some statistics from python.org may be relevant. There were 47,751 -Python 2.3 downloads in the first 10 days of September. These are the -'bleeding edge' developers, who were interested in the new release of -Python first made available at the end of August. At the other end of -the spectrum, there are many more who simply wait for Python to become -available as a Red Hat, or Debian package, or simply use the version -of Python that came installed with their machine when they bought it. - -For what its worth, there are about 600,000 http visitors a month to -python.org. About one third of them are using the documentation, -which is a fairly good indicator that they are trying to use the -language, as opposed to lost souls, looking for python.com, a porn -site. Number of unique IP addresses per month is about 350,000 at -this point, and has been rising steadily from about 250,000 this time -last year. - -Converting this into an actual estimate of number of users is a bit -hard, since: - -1) One user may use multiple machines (e.g. home & work & cafe) -2) Many sites use a firewall that hides the actual IP (and thus combines - multiple users into one) -3) Not all Python users go to python.org every month (or at least not - the Documentation page), because they have already downloaded the - documentation for local browsing. - -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if -O'Reilly's sales statistics for their popular books *Learning Python*, -*Python in a Nutshell* and *The Python Cookbook* are to be considered -relevant. Speaking of books, sales statistics of *The Essential -Jython* targetted at users of the Python version that compiles to -the Java Virtual Machine indicate that there are at least 10 thousand -Jython users worldwide. - -For comparison, there are something like 12 million programmers -world-wide and roughly 50% of those use Visual Basic (according to -International Data Corp). In March 2002, Borland said Java had about -1.5 million developers. - -That's a lot of Python users. Writing the language which they all use -will have an enormous impact. - -Beyond there are the users of other languages. -How do we go about getting them to use PyPy? - -First of all, we must give them something that they find useful, and -useful enough to switch. - - The current State-of-the-Art, both in - Python and in Computer Languages in general does not best - serve the new needs of the creators of embedded, networked and - distributed software sectors. They need a more flexible - language which is easier to reduce to its 'bare-bones' for - embedding, and which can dynamically reconfigure itself and - optimise execution speed at the interpreter level. - Consequently, the PyPy project is a collaboration between - academic researchers and SME software and service - providers. The former have the skill and vision to produce a - new run-time language architecture for the twenty-first - century and the latter wish to deploy PyPy in their innovative - new business ventures. The results of the PyPy project are - also expected to be taken-up by established industrial users. - We have expressions of interest from Bang and Olufsen, the - Danish manufacturer of high-end stereo equipment, Vodaphone - the mobile industrialist, Siemens, the German conglomorate, - and Axis the Swedish-based multinational market leader in - in-house developed chip technology for network video and print - servers. - - The project will go through three phases. In the first phase, - we will build a complete State-of-the-Art PyPy Interpreter. By - this we mean not only that PyPy will be perfectly compliant - with the language behavior of the existing Python language, - but also that it will be a State-Of-the-Art Very High Level - Object-Oriented Language. At this point the language is - expected to be very flexible, but also very slow. - - In the second phase, we will develop a high-performance PyPy - that addresses our modern needs. This PyPy will transcend the - State-of-the-Art -- it will be an innovative language best - suited for mobile, networked, and distributed - computing. Moreover, this will fix a longstanding complaint of - the estimated 175,000 Python programmers worldwide. Python - programs are faster to *develop* than programs in C, C++ or - Java, its main competition. But they *run* much slower. This - need not be. - - In a final third phase, we will validate the previous results by - implementing several applications using the high-performance PyPy - interpreter. - - - - - - - - - - - From arigo at codespeak.net Sun Oct 12 14:15:36 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 14:15:36 +0200 (MEST) Subject: [pypy-svn] rev 1760 - pypy/trunk/doc/funding Message-ID: <20031012121536.B2B915A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 14:15:35 2003 New Revision: 1760 Added: pypy/trunk/doc/funding/translation.png (contents, props changed) Removed: pypy/trunk/doc/funding/B6.1_plan_introduction.txt pypy/trunk/doc/funding/B6.2_tech_aspects.txt pypy/trunk/doc/funding/B6.3_risks_minimise.txt Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt pypy/trunk/doc/funding/FIXME Log: Done B6.0, B6.1, B6.2 (detailled implementation). Please review. Still working on B6.3 (risks). Moved all this text into a single file, B6.0. Added a figure. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 14:15:35 2003 @@ -1,62 +1,234 @@ +Detailed Implementation Plan +============================= + + :DELETE:BEGIN -B.6 Detailed Implementation Plan - -This section describes in detail the work planned to achieve the -objectives for the full duration of the of the proposed project. The -recommended length, excluding the forms specified below, is up to 15 -pages. An introduction should explain the structure of this workplan -plan and how the plan will lead the participants to achieve the -objectives. The workplan should be broken down according to types of -activities: Research, technological development and innovation related -activities, demonstration activities and project management -activities. It should identify significant risks, and contingency -plans for these. The plan must for each type of activity be broken -down into workpackages (WPs) which should follow the logical phases of -the project, and include management of the project and assessment of -progress and results. - -Essential elements of the plan are: - -a) Detailed Implementation plan introduction ? explaining the structure - of this plan and the overall methodology used to achieve the objectives. - -b) Work planning, showing the timing of the different WPs and their - components (Gantt chart or similar) - -c) Graphical presentation of the components showing their - interdependencies (Pert diagram or similar) - -d) Detailed work description broken down into workpackages: - Workpackage list (use Workpackage list form below); - Deliverables list (use Deliverables list form below); - Description of each workpackage (use Workpackage description form - below, one per workpackage): - -Note: The number of workpackages used must be appropriate to the -complexity of the work and the overall value of the proposed -project. Each workpackage should be a major sub-division of the -proposed project and should also have a verifiable end-point (normally -a deliverable or an important milestone in the overall project). The -planning should be sufficiently detailed to justify the proposed -effort and allow progress monitoring by the Commission ? the -day-to-day management of the project by the consortium may require a -more detailed plan. +B6.1 + +:DELETE:END + +Workplan Introduction +~~~~~~~~~~~~~~~~~~~~~ + + +The PyPy project can be roughly divided into three phases, the last two of which are somewhat independent from each other: + +o Phase 1: The core of PyPy itself must first be developed. + +o Phase 2: This code base can be used as an research/integration platform of choice. + +o Phase 3: Specific applications can be implemented and disseminated. + +Moreover, several project-long infrastructure tasks are of paramount importance. In particular, coordination is assured by the project coordinator in workpackage WP01_, with the help of the management and technical boards, as described in section B5. It involves the collection and monitoring of monthly status reports, reporting to the EU, organising sprints and maintaining an internal web site in collaboration with the maintenance workpackage. + -(recommended length, excluding the forms specified above,- up to 15 pages) + +:DELETE:BEGIN + +B6.2 :DELETE:END -Detailed Implementation Plan -============================= +Research and Technological Aspects and Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +Phase 1 +------- + +The first goal is to develop a reasonably complete Python interpreter written in Python. It must be entierely compatible with the language specification. It consists of the following major parts: + +o A *bytecode compiler,* which translates Python source code into an internal intermediate representation, the *bytecode.* + +o A *bytecode interpreter,* which interprets bytecodes and manages the supporting internal structures (frames, exception tracebacks...). It considers objects as black boxes and delegates all individual operations on them to a library of built-in types, the *Object Space.* + +o An *Object Space,* which captures the semantics of the various types of the language. + +This subdivision is common among interpreter implementations, although we place special emphasis on the library and its separation from the bytecode interpreter. The implementation will closely follow the current reference C implementation (CPython). It is thus expected to be relatively straightforward, changing only a few design decisions (mainly with respect to the Object Space separation of concerns), and changing strictly nothing to the Python language itself. + +This task is done in workpackage WP04_. After the initial development, WP04_ will switch its focus to implementing the number of extension modules written in C that are either standard or widely-used in CPython. (The Python Standard Library is written in a large part in Python already, so that the problem only concerns C extension modules.) For each of these, two strategies can be followed: either the module is translated into a (regular) Python module, or it is written as an extension module of the PyPy interpreter (i.e. in Python too, but at the level of the interpreter.) + +The result so far can only run on top of another Python implementation like CPython. It still has advantages over the existing implementation, in education (as a much more compact, modular and readable piece of code than CPython), and in flexibility (as a basis to plug in alternate Object Spaces, alternate interpreters, or alternate compilers) -- more about it below. + +At this point, to make PyPy stand-alone (and running at a reasonable speed), we must have restricted key areas of the source to be written in a subset of the Python language, a sublanguage (RPython) in which staticness restrictions are enforced. This sublanguage is suitable for analysis and translation into a lower-level language. Its precise definition is a balance between the amount of dynamic desired to write PyPy and the amount of effort we put in the translation tools. + +Note that translation is not a one-shot process; the only source code for PyPy will be in Python or RPython, and translation can be repeated freely as part of a compilation process. + +We are giving translation an innovative emphasis (and thus a whole workpackage, WP05_) in the project. It is not merely an RPython-to-C translator; it is an essential piece towards the flexibility goals. Numerous aspects that were design decisions influencing the whole source code of the current CPython are now merely customizable behaviour of the translator. Indeed, instead of hard-coding such design decisions, we will keep the PyPy source as simple as possible and plug the required knowledge into the translator. For example, the high-level source need not be concerned about memory management issues (garbage collection, reference counting...); this aspect can be "weaved" into the low-level code by the translator. This point is essential for the separation of concerns. It has deep advantages over the classical monolithic approach, ranging from education (the main source base is not encumbered by details) to raw performance (choice of appropriate low-level models based on real-world context-dependent measures and comparisons). Also note its extreme adaptability: instead of generating C code, it is straightforward to target other runtime environments like Java or .NET. By contrast, today's costs of maintaining several evolving implementations (CPython, Jython for Java...) are very high. + +The translation process itself requires some kind of analysis of the RPython code. Among the various ways to perform this analysis we will most probably choose the one based on *abstract interpretation,* as opposed to source-level or bytecode-level analysis: + +.. image:: translation.png + +The basic idea is to write an alternative "abstract" Object Space which, instead of actually performing any operation between objects, records these operations and traces the control flow. The "abstract" Object Space will be plugged into the existing bytecode interpreter; these two components will then function as an abstract (or symbolic) interpreter in the common sense. The net result is that we can actually analyse RPython source code without writing any code specific to the language (!) given that we already have a bytecode interpreter which is flexible enough to accomodate a non-standard Object Space. In other words, the combination of PyPy and an "abstract" Object Space performs as the front-end of the translator and can be used to translate (for example) the regular PyPy interpreter and its standard Object Space. Note the two different roles of the bytecode interpreter in the diagram above. + +Another notable advantage of this approach is that instead of operating on static source code, it works on the result of loading and initializing the code into the existing CPython interpreter. (Python, unlike more static languages, allows arbitrary computations to be performed while loading modules, e.g. initializing caches or selecting components according to external parameters.) We are thus not restricted to RPython at initialization time, which is important to acheive the configurability goals. + + +Phase 2 +------- + +The completion of the first translated stand-alone PyPy interpreter is where the project could potentially branch into a large number of directions. Numerous exciting applications can be foreseen; we will see some of them in more details in Phase 3. + +The Phase 2 is concerned about research and integration of research, based on the extreme flexibility provided by the PyPy platform. + +Part of Phase 2 focuses essentially on performance issues, which are important in helping to establish a language implementation, and to open the language to a wide range of applications for which it were previously thought to be unsuitable. + +The flexibility in PyPy allows a number of designs to be reconsidered; better yet, it allows different design decisions to coexist. Indeed, most "hard" issues in interpreters have no obvious best solution; they are all depend in complicated ways to the specific details of the runtime environment and on the particular application considered and its possibly evolving context. PyPy will provide a good platform to experiment with and compare empirically several different implementations for many of these issues. For example: + +o The language's core object types can have several implementations with different trade-offs. To experimented with this, we will write a collection of alternatives in the "standard" Object Space implementation and heuristics to select between them. This kind of research effort is common, but PyPy can provide a good platform for real-world comparisons, and to help isolate which particular choices have which effects in an otherwise unchanged environment. Such data is notoriously hard to obtain in monolithic interpreters. This is the focus of WP06_. + +o Similarily, as described above, pervasive design decisions can be experimented with by tailoring the translator. This is the focus of WP07_. + +We will in particular investigate in detail two specific ways to customize the translator: + +o Generating Continuation Passing Style (CPS) low-level code. This makes the advanced notion of continuation available for the programmer; but -- most importantly in our case -- it allows the development, with the help of an appropriate runtime system, to support massive parallelism. Indeed, in almost any OS, native threads are not appropriate for massive usage. Applications (e.g. web servers handling thousands of connections) have to somehow emulate parallelism explicitely. Soft-threads are an ideal target for language integration. This work (also part of WP07_) would consist of exploiting this idea, which has been first tried for Python in the Stackless project. + +o Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: we replace the "standard" Object Space with an Object Space which, instead of actually performing any operation between two objects, *generates* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is an Object Space able to translate individual operations to processor instructions, and supporting runtime systems. This is defined by WP08_. + +These two key optimisations will lead to an efficient JIT-compiling interpreter. Note that some of these optimisations can be implemented either in the original source (e.g. by writing a new Object Space) or equivalently at translation time. We will have to choose which strategy is best on a case-by-case basis. + +Finally, another part of Phase 2 focuses on non-performance-oriented but research-level aspects. These are the extensions enabled by the flexible division (bytecode compiler, bytecode interpreter, Object Spaces, and translator) enabled in Phase 1. For example, it would be possible to write an interpreter for a completely different language (e.g. Prolog) using the same framework, leveraging the translator and thus obtaining an efficient JIT-enabled implementation with little efforts. (Doing so for the Prolog language has been adopted as an implementation strategy in a current EU-funded project.) + +In the context of the PyPy project, we will not replace the interpreter altogether, but experiment with extensions: + +o involving feedback from the Python community, we will experiment with the proposed language extensions that are deemed worthy by the CPython developers. Numerous PEPs (Python Extension Proposals), for example, need an experimental implementation for testing before they can be accepted or rejected for integration into CPython; not only is PyPy a good platform to test them on, but this would give PyPy an active part in the effort of keeping synchronised with the development of CPython. (The role of WP03_ is to keep track of the ongoing development of the Python language and its CPython implementation, for which we will also look for existing solutions to automate the "passive" part of this effort at least partially.) + +o WP09_ involves the research and development of techniques inspired from logic programming. An inference engine already exists in the python-logic libraries. Successful integration of these concepts, far from regular imperative programming, would provide a validation of the level of flexibility we achieved in Phase 1. It would also provide an essential starting point for WP10_, described below. + + +Phase 3 +------- + +The third phase of the project is to implement selected key applications of the flexibility we have enabled so far. -In this section, we describe in detail the work planned to achieve the -objectives for the full duration of the proposed project. +Let us stress again that Phase 3 is not meant to run only after Phase 2, but partly in parallel with it. The core flexibility on top of which we will be building is provided by the PyPy interpreter as described in Phase 1. -FIXME_CHRISTIAN: see B0.1 for phases +The applications we have selected can be categorized into the following categories: + +o Language-level object models; + +o Language-level extensions; + +o Interpreter adaptations. + +This is also where we expect third-parties to build on top of our platform. + + +Language-level object models +++++++++++++++++++++++++++++ + +This is the topic of WP12_. We will integrate with the language itself three middleware features: security, transparent distribution, and persistence. + +**Security** is an important and difficult aspect that requires knowledge and support at a wide number of levels to be effective. Programming languages can help contribute to security at their level. Different object security models are possible: + +o The language can be artificially restricted, with dangerous operations taken out and thus impossible to achieve by interpreted programs. In effect, this amount to building a stripped-down interpreter. + +o Access to some objects can be denied to only some (untrusted) parts of the interpreted program; or access can go though proxies performing some kind of access checks. This is a more flexible solution, but it is more difficult to implement efficiently. Explicit checks for each access consume time. In PyPy this could be implemented as an Object Space checking and delegating operations to another Object Space. + +For comparison, CPython used to implement security-by-absence-of-reference: untrusted parts of a program could supposedly not obtain a reference to a dangerous object. This model, called "RExec", has been recognized as fragile and hard to maintain. It has been removed from CPython. + +In PyPy, one or both of the alternatives previously described can be practically implemented. + +**Transparent distribution** of objects over a network is another middleware feature that would benefit from being implemented at the language level. This is a vast subject which has been studied extensively. There are several implementations already available in Python, with varying degrees of transparence. None however can be fully transparent by definition of the language itself, which allows introspection -- a program using introspection features could thus defeat the delicate mecanisms introduced by a network distribution library. Moreover, such libraries typically impose additional constrains, e.g. are only able to move objects over a network if they are of a class inheriting from a particular class. + +We will study which of these implementations is best suited for being moved into the interpreter itself. So far, a foreseen solution would be to design a proxying Object Space that delegates operations to a remote object server over the network. We will also study approaches enabling transparent distributed execution, i.e. in which the Object Space may decide to send not each operation individually, but instead the whole algorithm's bytecode, when numerous remote objects are involved. + +**Persistence** is related to distribution; it is essentially a way to move objects transparently between the persistent storage and the main memory. The same remarks apply, e.g. several implementations exist already (e.g. ZODB) but would benefit from better language integration. + + +Language-level extensions ++++++++++++++++++++++++++ + +WP10_ will base itself on the language extensions developed in WP09_. + +FIXME_ALASTAIR write this paragraph + + +Interpreter adaptations ++++++++++++++++++++++++ + +The PyPy interpreter as developed in Phases 1 and 2 will be particularly prone to adaptation to extremely various runtime environments, from embedded devices to number-crunching machines. In WP11_ we propose to study to specific case of embedded devices, which are often limited in processor speed and memory size. This either limits the power of software that is implemented for these platforms, or enforces use of low-level approaches like C/C++ or Java. PyPy is especially suited to support such platforms, since it can produce effective and compact code, while retaining the abstraction and ease-of-use of Python. + +Based on the specific needs of these devices, we will experiment with memory- or battery-efficient implementations of all the customizable aspects described in Phase 2. The PyPy code generator will need an extra platform specific support module, as well as interfaces to necessary device drivers. It may make sense to develop a PyPy simulator for the target platform. + +We will use feedback from actual hardware to compare the results obtained. If code space permits we will implement heuristics to switch to the most efficient implementations when these are context- or application-dependent. + + +Integration and Configuration ++++++++++++++++++++++++++++++ + +It is expected that most of the applications described above will still be relatively experimental when the project ends. It is also expected that the extreme flexibility will lead to a potentially large number of different end-user configurations of PyPy. Thus our essential goal, beyond validating our techniques and showing what can be done and how it benefits from integration with the language, is to make this knowledge available and easy-to-use for contributors and third-parties. + +To fulfill the technical aspect of this goal, we will not only release a range of different versions of PyPy with different trade-offs and including more or less of the features developed in Phase 3, but we will also build a complete toolchain to allow programmers to choose from the available features, various implementations, and runtime restrictions and build a custom PyPy version. This is the objective of WP13_. + + +Documentation and Dissemination +------------------------------- + +The documentational aspect of the dissemination goal is handled by one of the few workpackages that run for the whole duration of the project. + +Each sprint, as well as the regular progress of non-sprint development, will +produce technical novelties, some of which may afford immediate use and adoption +of the novel technologies being developed. WP14_ will periodically produce short +reports on the result of "sprints" and other development. Said reports will be +posted to the relevant mailing lists as well as archived on both the PyPy and +the Python Business Forum website for universal availability. + +Python community members will be encouraged to keep current with the project +through the short reports, while community feedback on technical developments +will be gathered on the website and mailing lists to be used by the appropriate +project areas to further enhance the project's development efforts, in true Open +Source spirit. + +In addition to the periodically produced short reports, WP14_ will on occasion +present longer, detailed reports to the Commission, and to scientific committees +advising the Commission on technical issues. Technical papers and talks will be +submitted to scientific conferences which deal with the subject matters covered +by the project. When the advancement of the project warrants it, WP14_ will also +publish "popularization" articles and tutorial materials to help other +practitioners of software development to make practical use of the project's +results. Diagrams and schematics will be provided to illustrate fundamental +concepts, as appropriate to the audience and the subject matter. + + +Management +---------- + +PyPy's own development needs an infrastructure that must continuously be kept up-to-date and further developed. The role of WP02_ is decisive in choosing and adopting modern development environments. The main source repository is placed under control of Subversion, a Concurrent Versioning System. This workpackage also includes maintaining and possibly redesigning frameworks for unit-testing -- unit-tests are essential in the development process in sprints. The website makes heavy use of collaborative tools like Wiki pages, a content management system, and issue trackers. + +Other tasks include: + +o Subversion maintenance (e.g. notification hooks and pre/post-commit restrictions); + +o providing access over http/https and ssh server; + +o building extensions for automatic document extraction; + +o maintenance or setup of mailing lists; + +o implementing a search facility over all content; + +o maintaining or extending the issue tracker; + +o maintaining and enhancing the website infrastructure; + +o performing backups for all relevant information/code; + +o setting up a mirror repository which is kept up-to-date and which can be used readonly in case of failure of the main repository; + +o taking care of regular repository backups, designing a strict backup policy suitable for the project, and adhering to it. + + +:DELETE:BEGIN + +B6.3 + +:DELETE:END -Phase 1 is technical development of State of The Art interpreter +Risks in the Project and Steps to Minimise +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Phase 2 is research and innovation to produce high performance interpreter -Phase 3 is validation and dissemination through implementation of applications +FIXME_ARMIN I'm working on it. Deleted: /pypy/trunk/doc/funding/B6.1_plan_introduction.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.1_plan_introduction.txt Sun Oct 12 14:15:35 2003 +++ (empty file) @@ -1,398 +0,0 @@ -FIXME_CHRISTIAN: finish this - -.. include:: crossreferences.asc - -Workplan Introduction -=============================== - -The PyPy project addresses a number of topics, which -can be categorized into the following working packages. -Each group is further broken down into tasks as necessary. - -- Development of PyPy itself, as a Python written in Python. - This includes code generation for various targets, re-implementation - of all builtin Python objects and some extension modules, - and the development of several object spaces, testing and documentation. - - - The PyPy Interpreter - - - The PyPy Compiler - - - Bootstrapping PyPy - - - High-performance PyPy-Python - -- Validation of PyPy in real applications. - Generating down-sized code for embedded systems, load balancing - in a distributed network, code generators optimized for number crunching - on some processor architectures and re-writing numerical Python - packages should be able to prove that PyPy is very appropriate - for industrial strength applications. - - - Supporting Embedded Devices - - - Load Balancing in a Multi-Processor environment - - - Numerical Applications - -- Infra structure tasks carried out throughout the whole project - - - Coordination and Management - - - Project Documentation and Dissemination - - - Maintenance of the development environment - - - Synchronisation with Standard Python - - -WP01_: Coordination and Management -------------------------------------- -WP1 continues throughout the duration of the project and is carried out -by the project coordinator. It involves the collection and monitoring of -monthly status reports, reporting to the EU, organising meetings -and maintaining an internal web site. The website will make heavy -use of collaborative tools like Wiki pages, a content management system, -and issue trackers. - - -WP04_: The PyPy Interpreter ---------------------------- - -The goal is to make a complete Python interpreter that runs under any -existing Python implementation. - -WPXXX21: Development and Completion of the PyPy Interpreter -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - The PyPy interpreter itself should be developed and completed - as a regular Python/RPython program. This package includes all - parts of CPython that we don't want to move to WPXXX22. - Further investigation is needed concerning the - multimethod concepts of the standard object space, - and how to hook in the bytecode compiler. - - -WPXXX22: Porting CPython C-sourcecode to regular Python -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Port all parts of CPython which we don't want to - implement in WPXXX21 into regular Python libraries. - These ones should also work without PyPy, being just plain-Python - replacements for existing CPython functionality. - This includes the bytecode compiler, which definitely should - become a regular Python program, instead of being built - into the interpreter. - - -WP05_: The PyPy Translation ---------------------------- - -WPXXX31: Translation of RPython -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - RPython is a restricted version of Python, which is much - more statically defined than standard Python. It allows - to write code that is rather easily translated into something - else, like C source, Pyrex code, or even passed to - an assembly code generator. - The Definition of RPython is slightly in flux and should - be adjusted during WPXXX31. - - The goal is to be able to translate arbitrary RPython source code (e.g. - the one produced in WPXXX21 into low-level code (C, Pyrex, Java, others). - This includes making a stand-alone, not-PyPy-related tool for general - optimisation of arbitrary but suitably restricted Python application or - parts thereof. - -Bootstrapping PyPy -~~~~~~~~~~~~~~~~~~~ - -The goal is to put interpreter (WPXXX21, WPXXX22) and translator -(WPXXX31) together. - -The interpreter is written as an RPython program. The translator -has to translate this program into some low-level language. -The resulting program then needs to be supported by a special -runtime library. The work-flow of WPXXX32 is repetitive, -since it will not be possible to "get it right" in the -first attempt. Analysis and redesign will have to be -repeated until the result is satisfactory. - - -WPXXX32: Specific Analysis and Redesign -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - The global translation of PyPy is going to raise particular - problems, other than more general RPython programs do. - Since translation of RPython is the core idea of the - bootstrap process and the main target of the translator, - we need to investigate and isolate the - particular problems, and redesign specific parts of PyPy - to support translation, code generation and optimisation - better. This will also include a re-iteration of the interface - design between application level and interpreter level - until we reach overall convergence. - - -WPXXX33: Low Level PyPy Runtime -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - In order to give a working environment to the translated RPython - program, we need to build the low-level-specific **run-time** - components of PyPy. - Most notably are the object layout, the memory management, - and possibly threading support, as well as an - efficient multimethod dispatch. - The target language is not yet decided on. We might go different - paths at the same time. - If producing C code is a target, important - parts can be directly re-used from CPython. - - -High-performance PyPy-Python ------------------------------------------- - -The goal is to optimize Bootstrapping in possibly various ways, -building on its flexibility to go beyond CPython. -The main lack of flexibility in CPython stems from the -fact that all structures are hard-coded in C, and there is -no abstraction layer. PyPy does provide this abstraction layer, -since its RPython implementation is not meant to be -executed directly, but goes though a code generator which -produces the actual machine code. This layer is highly configurable. - -Integration of Existing Technology -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - There are existing projects, notably Psyco_ and Stackless_, - which have been traditionally dependent on closely - following CPython's code base. - - Both will be rewritten as a meta-component that hooks into the - translator plus a dedicated run-time component (WPXXX33). - - As a side effect, after successful completion of the - PyPy project, they no longer need to exist as stand-alone - projects. - - -WPXXX41: Integration of _`Stackless` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Stackless Python has implemented high speed multitasking in - a single thread for C Python in two different ways: - Continuation passing and stack switching. Both ways of - task switching can be integrated into PyPy. Furthermore, - pickling of running programs has been implemented in - Stackless Python and should enable PyPy for load-balancing - between different machines. - - -WP06_: Core Optimisations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Since the standard object space allows coexistence of different - implementations of the same type, we can develop - **several object implementations**. - We will develop heuristics to switch between different - implementations during execution. - The goal is to study the efficiency of different approaches, - with the possibility to change the default implementation - in favor of a different one, not known in CPython. - Some object layouts will further exist in parallel, if their - efficiency is highly application dependant. - -XXX: reformulate this. - The following objects are mostly independent from any particular low-level run-time - environment. - -WP09_: Language Research and Extension -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -XXX write it. - -WP07_: Translator Optimisations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - It should be identified, which **optimisations** would benefit - from support from the translator. These are the optimisations - not easily available to CPython because they would require - large-scale code rewrites. - This includes design-considerations including the decision whether - to use reference counting together with garbage collection, - or whether to go for garbage collection, only. - - The meta-programming underlying WP07_ - -- namely the work on the translator instead of on the resulting code -- is - what gives us the possibility of actually implementing several very - different schemes. The outcome of this effort is of course not unique, - but depends on the specific target of the optimisation. - There will be at least two efforts at the same time: - - - optimisation towards maximum performance of an integrated PyPy system - - - optimisation towards minimal code size for embedded systems. - - -WP06_: Integration of _`Psyco` -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Psyco provides techniques to increase the performance of C - Python by generating specialized machine code at run-time. - Developing C Psyco has proved that more flexibility would be of - paramount importance to the project. All prior knowledge of the - Psyco project will thus be integrated into PyPy, as Python and - RPython code, enabling yet more efficient optimisations and - allowing new processor architectures to be targeted. - - -WP11_: Validation of PyPy ---------------------------- - -The goal is to provide a validation of the advancements of -the state of the art and the real world applicability of these. - -Supporting Embedded Devices -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Embedded devices are often limited in processor speed and -memory size, which either limits the power of software that -is implemented for these platforms, or enforces use of -low-level approaches like C/C++ or Java. -PyPy is especially suited to support such platforms, since -it can produce highly effective, compact code, while retaining -the abstraction and ease-of-use of Python. - - -WPXXX51: Porting PyPy to an Embedded Device -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Dependant from the actual processor architecture, PyPy's - code generator needs an extra platform specific support - module. Interfaces to necessary device drivers are needed - as well as it makes sense to develop a PyPy simulator for - the target platform. - -WPXXX52: Evaluation whether to do a small OS in PyPy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Implementing a small operating system in PyPy raises - some new questions and opens a new category of problems. - One of them is the possible need to write an IP stack - in PyPy, and a number of device drivers as well. - In this short task, we will figure out whether it is - feasible to carry on with the next task. - -WPXXX53: A small Operating System for an Embedded Device -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - *we are thinking of a printer here, but don't have facts yet* - - In extent to WPXXX51, it makes sense to write the whole - operating system in PyPy. We need a low-level extension - to the code generator that allows to access I/O ports. - Interrupts need to be supported as well, and primitive - access to persistant storage. - Ideally, we can create a single threaded PyPy OS with - a prioritized scheduler that runs the OS parts together - with multiple Python application. The latter depends on - WPXXX41 very much. - - -Numerical Applications -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -PyPy is extremely flexible, since it supports static -and dynamic code generation by pluggable processor -architecture modules. PyPy can use special hardware -by itself, or it can cross-compile code for target -machines which will run only a downsized PyPy -instantiation which is runtime only. - -One advantage of using PyPy instead of other compiled -libraries is its ability to not only support the -special hardware, but also to adjust to the given -machine properties, like cache sizes, number of -parallel FPUs, memory access speed and memory size. -PyPy is able to probe these parameters and to choose -an optimum implementation for the particular hardware -configuration during startup time. - - -WPXXX54: Code Generator for SIMD Architecture -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - In order to support numerical applications better, - PyPy should be extended to support special hardware - like SIMD (Single Instruction Multiple Data) processors. - We are aiming to pick one SIMD architecture, like - SSE2 or AltiVec, and extend the code generator to support - and optimize for the new instructions. - We don't intend to support a completely new instruction - set, but prefer to choose an extension to an architecture - that we are already supporting. - - The existence of special instructions and other extensions - should be probed using run-time checks. Psyco should be - extended to be aware of parallel instructions, and be - enabled to emit optimized code for that. - - PyPy needs to be extended to support a vectorized - data type from the Python level, as well. - The specification of that is part of this task. - -WPXXX55: Enhanced Numerical Package -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Rewrite a numerical Python package like NumPy - using RPython. Identify the numerical operations - in the package which are candidates for parallelization. - Write an interface that allows to implement these operations - in either a traditional way or using SIMD instructions, - dependent from the available capabilities of the current - code generator. - -WPXXX56: Load Balancing in a Multi-Processor environment -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*XXX add some general words here from the wp* - - -WP12_: Integration and Configuration -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -XXX write it. - -Infrastructure ------------------- - - -WP14_: Project Documentation and Dissemination -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -During the whole project, a set of documents will be maintained -that documents the current status of the project, results of -discussions, the planning of new sprints and their status reports, -as well as the preparation of papers for presentation on -various congresses. - -In extent, there is an ongoing information flow to external -communities, like the Python Business Forum (PBF) and the Python -developers list (python-dev at python.org). - -WP02_: Maintenance of Tools -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -PyPy's own development needs an infrastructure that must continuously -be kept up-to-date and further developed. This includes maintenance -of the Subversion package and tracking of its ongoing development, -maintenance of the Subversion repository, extensions like automatic -documentation extraction, and change notification via mailing lists. - - -WP03_: Synchronisation with Standard Python -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Since Python is being further developed all the time, there is -a continuous need of keeping PyPy in sync with the future developments -of CPython, e.g. ways to relate pieces of PyPy source and pieces of CPython -source. This work is carried out by hand at the moment. We -do look for existing solutions which allow to automate this -effort at least partially. - - Deleted: /pypy/trunk/doc/funding/B6.2_tech_aspects.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.2_tech_aspects.txt Sun Oct 12 14:15:35 2003 +++ (empty file) @@ -1,8 +0,0 @@ -FIXME_LAURA FIXME_NICO: finish this - -.. include:: crossreferences.asc - -Research and Technological Aspects and Options -================================================== - -FIXME something must go here. \ No newline at end of file Deleted: /pypy/trunk/doc/funding/B6.3_risks_minimise.txt ============================================================================== --- /pypy/trunk/doc/funding/B6.3_risks_minimise.txt Sun Oct 12 14:15:35 2003 +++ (empty file) @@ -1,9 +0,0 @@ -FIXME_LAURA FIXME_NICO: finish this - -.. include:: crossreferences.asc - -Risks in the Project and Steps to Minimise -============================================= - -FIXME: some text must go here. - Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 14:15:35 2003 @@ -103,20 +103,20 @@ B6.0_detailed_implementation Should be empty. -NOT STARTED +READY FOR REVIEW: Armin B6.1_plan_introduction Needs checking and editing. Material consistent with work packages? -NOT STARTED +DONE (merged into B6.0) B6.2_tech_aspects Needs writing. -NOT STARTED +DONE (merged into B6.0) B6.3_risks_minimise Needs writing. -NOT STARTED +STARTED: Armin B6.4_gantt Needs checking. Added: pypy/trunk/doc/funding/translation.png ============================================================================== Binary file. No diff available. From arigo at codespeak.net Sun Oct 12 14:55:43 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 14:55:43 +0200 (MEST) Subject: [pypy-svn] rev 1761 - pypy/trunk/doc/funding Message-ID: <20031012125543.CBF245A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 14:55:42 2003 New Revision: 1761 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: More blurb on persistance and transparent distribution. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 14:55:42 2003 @@ -133,9 +133,11 @@ **Transparent distribution** of objects over a network is another middleware feature that would benefit from being implemented at the language level. This is a vast subject which has been studied extensively. There are several implementations already available in Python, with varying degrees of transparence. None however can be fully transparent by definition of the language itself, which allows introspection -- a program using introspection features could thus defeat the delicate mecanisms introduced by a network distribution library. Moreover, such libraries typically impose additional constrains, e.g. are only able to move objects over a network if they are of a class inheriting from a particular class. -We will study which of these implementations is best suited for being moved into the interpreter itself. So far, a foreseen solution would be to design a proxying Object Space that delegates operations to a remote object server over the network. We will also study approaches enabling transparent distributed execution, i.e. in which the Object Space may decide to send not each operation individually, but instead the whole algorithm's bytecode, when numerous remote objects are involved. +We will study which of these implementations is best suited for being moved into the interpreter itself. These include transparent interfaces to remote objects (CORBA, Java EJB...), transparent distribution of objects, and transparent distribution of processes themselves. For example, a foreseen solution for the CORBA model would be to design a proxying Object Space that delegates operations to a remote CORBA object server over the network, thus hiding the complexities of the underlying protocols. We will also study approaches enabling transparent distributed execution, i.e. in which the Object Space may decide to move not objects or operations, but instead the whole algorithm's bytecode. This enables real transparent distributed execution with applications like fault tolerance (e.g. perform the computations on two machines and compare the results). -**Persistence** is related to distribution; it is essentially a way to move objects transparently between the persistent storage and the main memory. The same remarks apply, e.g. several implementations exist already (e.g. ZODB) but would benefit from better language integration. +**Persistence** is related to distribution; it is essentially a way to move objects transparently between the persistent storage and the main memory. This subject has already been studied extensively, and there are several implementations already available. + +We are considering at this point ZODB, the Zope Database engine, and PyPerSyst and Prevalence, which are quite complete. Their respective developers have already expressed high interest in PyPy. Indeed, they would benefit from better language integration; they currently put non-natural constrains on the programmer in the form of what he is allowed to do for persistence to actually work transparenty. Typically, it is not possible for a library to detect changes like adding elements to lists, so the list objects cannot be automatically marked as "dirty" (needed to save). This requires language support, and more specifically an extension or proxy Object Space. Language-level extensions From arigo at codespeak.net Sun Oct 12 15:10:42 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 15:10:42 +0200 (MEST) Subject: [pypy-svn] rev 1762 - pypy/trunk/doc/funding Message-ID: <20031012131042.99ECE5A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 15:10:41 2003 New Revision: 1762 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: More text about Psyco Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:10:41 2003 @@ -73,6 +73,10 @@ The Phase 2 is concerned about research and integration of research, based on the extreme flexibility provided by the PyPy platform. + +Performance ++++++++++++ + Part of Phase 2 focuses essentially on performance issues, which are important in helping to establish a language implementation, and to open the language to a wide range of applications for which it were previously thought to be unsuitable. The flexibility in PyPy allows a number of designs to be reconsidered; better yet, it allows different design decisions to coexist. Indeed, most "hard" issues in interpreters have no obvious best solution; they are all depend in complicated ways to the specific details of the runtime environment and on the particular application considered and its possibly evolving context. PyPy will provide a good platform to experiment with and compare empirically several different implementations for many of these issues. For example: @@ -85,11 +89,15 @@ o Generating Continuation Passing Style (CPS) low-level code. This makes the advanced notion of continuation available for the programmer; but -- most importantly in our case -- it allows the development, with the help of an appropriate runtime system, to support massive parallelism. Indeed, in almost any OS, native threads are not appropriate for massive usage. Applications (e.g. web servers handling thousands of connections) have to somehow emulate parallelism explicitely. Soft-threads are an ideal target for language integration. This work (also part of WP07_) would consist of exploiting this idea, which has been first tried for Python in the Stackless project. -o Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: we replace the "standard" Object Space with an Object Space which, instead of actually performing any operation between two objects, *generates* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is an Object Space able to translate individual operations to processor instructions, and supporting runtime systems. This is defined by WP08_. +o Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: instead of actually performing any operation between two objects, we *generate* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is to translate individual operations to processor instructions, together with a supporting runtime systems. This is defined by WP08_. + +In dynamic languges, the truth behind JIT compiling is a bit more involved than the above paragraph suggests. All the "standard" operations in Python, including the intuitively simple ones, are actually relatively complex because they depend heavily on the runtime type of the involved objects. This complex code is already written in detail in the "standard" Object Space. Thus the JIT compiler will work by abstract interpretation of RPython code, i.e. abstract interpretation of the interpreter itself (as opposed to user application code). This is similar to the ideas behind the translator, which operates on the RPython source (i.e. the bytecode interpreter and the standard Object Space). We plan to write the dynamic part of the JIT as a plug-in to the translator: instead of generating C code that is the direct translation of PyPy, we will generate C code that itself generates machine code. This extra indirection has large benefits: the operations the JIT need to be taught about are only the ones allowed in RPython. The resulting piece of C code would thus be the JIT-enabled version of PyPy. + -These two key optimisations will lead to an efficient JIT-compiling interpreter. Note that some of these optimisations can be implemented either in the original source (e.g. by writing a new Object Space) or equivalently at translation time. We will have to choose which strategy is best on a case-by-case basis. +Other research aspects +++++++++++++++++++++++ -Finally, another part of Phase 2 focuses on non-performance-oriented but research-level aspects. These are the extensions enabled by the flexible division (bytecode compiler, bytecode interpreter, Object Spaces, and translator) enabled in Phase 1. For example, it would be possible to write an interpreter for a completely different language (e.g. Prolog) using the same framework, leveraging the translator and thus obtaining an efficient JIT-enabled implementation with little efforts. (Doing so for the Prolog language has been adopted as an implementation strategy in a current EU-funded project.) +The other part of Phase 2 focuses on non-performance-oriented research-level aspects. These are the extensions enabled by the flexible division (bytecode compiler, bytecode interpreter, Object Spaces, and translator) enabled in Phase 1. For example, it would be possible to write an interpreter for a completely different language (e.g. Prolog) using the same framework, leveraging the translator and thus obtaining an efficient JIT-enabled implementation with little efforts. (Doing so for the Prolog language has been adopted as an implementation strategy in a current EU-funded project.) In the context of the PyPy project, we will not replace the interpreter altogether, but experiment with extensions: From hpk at codespeak.net Sun Oct 12 15:17:55 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 15:17:55 +0200 (MEST) Subject: [pypy-svn] rev 1763 - pypy/trunk/doc/funding Message-ID: <20031012131755.090725A442@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 15:17:55 2003 New Revision: 1763 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: gave the WP14_ (Documentation and Dissemination) a slightly different tweak in that all developers and participants are expected to communicate with their communities. please read and comment if you think this is appropriate. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:17:55 2003 @@ -182,17 +182,20 @@ Each sprint, as well as the regular progress of non-sprint development, will produce technical novelties, some of which may afford immediate use and adoption of the novel technologies being developed. WP14_ will periodically produce short -reports on the result of "sprints" and other development. Said reports will be -posted to the relevant mailing lists as well as archived on both the PyPy and -the Python Business Forum website for universal availability. - -Python community members will be encouraged to keep current with the project -through the short reports, while community feedback on technical developments -will be gathered on the website and mailing lists to be used by the appropriate -project areas to further enhance the project's development efforts, in true Open -Source spirit. +reports on the result of "sprints" and other development. We expect all developers +and participants to openly report to and discuss with their respective communities. +Reports and summaries will be posted to the relevant mailing lists as well as archived +on both the PyPy and the Python Business Forum website for universal availability. +WP14_ is to support this process at all levels + +Python community members will be encouraged to keep current and get involved +with the project, while community involvement and feedback on technical +developments will effect design and implementation decisions. Feedback and +suggestions will be gathered on the website and mailing lists to be used by the +appropriate project areas to further enhance the project's development efforts, in true +Open Source spirit. -In addition to the periodically produced short reports, WP14_ will on occasion +In addition to supporting the communication process, WP14_ will on occasion present longer, detailed reports to the Commission, and to scientific committees advising the Commission on technical issues. Technical papers and talks will be submitted to scientific conferences which deal with the subject matters covered From hpk at codespeak.net Sun Oct 12 15:21:51 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 15:21:51 +0200 (MEST) Subject: [pypy-svn] rev 1764 - pypy/trunk/doc/funding Message-ID: <20031012132151.AE8CE5A442@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 15:21:50 2003 New Revision: 1764 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt pypy/trunk/doc/funding/B3.impact.txt pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: include crossreferences.asc in case of references to WPs Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sun Oct 12 15:21:50 2003 @@ -1,3 +1,5 @@ +.. include:: crossreferences.asc + Relevance to the Objectives of the IST Priority ----------------------------------------------- Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 15:21:50 2003 @@ -1,3 +1,5 @@ +.. include:: crossreferences.asc + FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it FIXME think about where to include Logilab and DFKI references Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:21:50 2003 @@ -1,3 +1,5 @@ +.. include:: crossreferences.asc + Detailed Implementation Plan ============================= From arigo at codespeak.net Sun Oct 12 15:27:49 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 15:27:49 +0200 (MEST) Subject: [pypy-svn] rev 1765 - pypy/trunk/doc/funding Message-ID: <20031012132749.46AB85A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 15:27:48 2003 New Revision: 1765 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: Risks section. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:27:48 2003 @@ -246,4 +246,38 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -FIXME_ARMIN I'm working on it. +The success of the project depends on the success of Phase 1. When the corresponding milestone is reached -- a complete Python interpreter in Python and a translator for it -- the project branches. The Phase 2 and Phase 3 workpackages are not tightly interconnected. So let us first focus on the Phase 1. + + +Phase 1 +------- + +The initial design decisions have already been discussed during the young history of the project and its first 4 sprints, and a basic working prototype has already been written as a proof of concept. We thus take for granted that the risks associated with the following decisions are almost non-existent at this point: + +o writing a Python interpreter in Python is not only possible but it is done much faster and easily than in C. + +o following some basic design decisions of CPython (the internals of whom most of us are intimately familiar with) leads to fast development and good results. + +o pluggable Object Spaces do work. Several proof-of-concept Object Spaces have been successfully tried. + +o Object Spaces are really a suitable abstraction for abstract/symbolic interpretation. Control flow of simple functions have been derived using an Object Space. + +Moreover, simple type analysis and generation of low-level code from a low-level representation is common in a variety of contexts, so we don't expect particular problems from there either. + +As a fall-back solution, we are aware of the more common way to do the translator analysis: if the abstract Object Space should fail to scale as expected we will revert to a classical bytecode-based analysis, adapting tools that are already available for this task. We will however pursue the abstract interpretation solution as far as possible because it leads to more language-independence and thus a single place where knowledge about the details of the bytecode needs to be written. + + +Phase 2 +------- + +The Phase 2 is mainly research-oriented. It is by definition more difficult to predict the involved risks and fall-backs. + +Let us simply note that the performance goals of Phase 2 are backed by the prototypes Stackless and Psyco, whose authors are among the PyPy members. Also note that the described performance goals, while very interesting to widen the application area of the language, are not essential to the other applications we have planned. Phase 1 (including translation) already produces a level of performance that can reasonably be expected to be comparable to the existing CPython interpreter. + + +Phase 3 +------- + +Phase 3 consists of a number of independent applications. Consequently, a failure in one of them would almost certainly not influence the others. Of course, appropriate effort has nevertheless been taken to avoid failure in each of the mentionned application: all of them are to some extent already existing as middleware libraries, and people fluent in the corresponding domains generally appreciate the advantages a better language integration would bring. + +The project concludes with an Integration and Configuration workpackage; should one of the previous applications fail, the final configurable tool will still be able to integrate the others. The only risk involved there would involve difficulties (technical or others) to integrate the work done by the various partners. As a fall-back solution we may have to keep some successful but hard to integrate applications out of the mainstream full-featured release or even configuration tool. It is a tendency about open source projects to sometimes fork and later, when concensus is reached, merge again. We will try to minimize the corresponding risk, and think that it is indeed minimal if the different applications can be kept as non-overlapping as possible. From hpk at codespeak.net Sun Oct 12 15:37:21 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 15:37:21 +0200 (MEST) Subject: [pypy-svn] rev 1766 - pypy/trunk/doc/funding Message-ID: <20031012133721.4474C5A442@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 15:37:20 2003 New Revision: 1766 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: some more clarification that developers/participants are expected to talk with their appropriate communities. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:37:20 2003 @@ -183,12 +183,11 @@ Each sprint, as well as the regular progress of non-sprint development, will produce technical novelties, some of which may afford immediate use and adoption -of the novel technologies being developed. WP14_ will periodically produce short -reports on the result of "sprints" and other development. We expect all developers -and participants to openly report to and discuss with their respective communities. -Reports and summaries will be posted to the relevant mailing lists as well as archived -on both the PyPy and the Python Business Forum website for universal availability. -WP14_ is to support this process at all levels +of the novel technologies being developed. We expect all developers and participants +to openly report to and discuss with their appropriate communities. Reports and summaries +will be posted to the relevant mailing lists as well as archived on both the PyPy and +the Python Business Forum website for universal availability. WP14_ is to support +this process at all levels Python community members will be encouraged to keep current and get involved with the project, while community involvement and feedback on technical From arigo at codespeak.net Sun Oct 12 15:38:14 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 15:38:14 +0200 (MEST) Subject: [pypy-svn] rev 1767 - pypy/trunk/doc/funding Message-ID: <20031012133814.CECF55A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 15:38:14 2003 New Revision: 1767 Modified: pypy/trunk/doc/funding/FIXME Log: updated FIXME to the state of B6 Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 15:38:14 2003 @@ -102,21 +102,8 @@ NOT STARTED B6.0_detailed_implementation -Should be empty. -READY FOR REVIEW: Armin - -B6.1_plan_introduction -Needs checking and editing. -Material consistent with work packages? -DONE (merged into B6.0) - -B6.2_tech_aspects -Needs writing. -DONE (merged into B6.0) - -B6.3_risks_minimise -Needs writing. -STARTED: Armin +REVIEWED: hpk +READY FOR REVIEW: Bea or Jah please review the section "Risks" B6.4_gantt Needs checking. From arigo at codespeak.net Sun Oct 12 15:39:50 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 15:39:50 +0200 (MEST) Subject: [pypy-svn] rev 1768 - pypy/trunk/doc/funding Message-ID: <20031012133950.BF5FC5A442@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 15:39:49 2003 New Revision: 1768 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: typo Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 15:39:49 2003 @@ -187,7 +187,7 @@ to openly report to and discuss with their appropriate communities. Reports and summaries will be posted to the relevant mailing lists as well as archived on both the PyPy and the Python Business Forum website for universal availability. WP14_ is to support -this process at all levels +this process at all levels. Python community members will be encouraged to keep current and get involved with the project, while community involvement and feedback on technical From lac at codespeak.net Sun Oct 12 15:45:07 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 15:45:07 +0200 (MEST) Subject: [pypy-svn] rev 1769 - pypy/trunk/doc/funding Message-ID: <20031012134507.82BA85A442@thoth.codespeak.net> Author: lac Date: Sun Oct 12 15:45:06 2003 New Revision: 1769 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: New section B.4.5, see if you like it Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 15:45:06 2003 @@ -318,7 +318,7 @@ Krekel has demonstrated his ability to deliver results during the prototype phase that has preceeded this application. For the rest of the PBF, it should be noted that the chairman of the SIG is a member -of the project, as well as 3 of the members of the PBF board; +of the project, as well as 4 of the members of the PBF board; Chauvat, Creighton, Hall?n and Martelli. The stated merits of these people and their respective organisations should vouch for the PBF fulfilling its undertakings. @@ -328,28 +328,116 @@ A special circumstance is that several of the project participants have already collaborated in developing a proof of concept for -Pypy. This means that the ability to collaborate and to deliver +PyPy. This means that the ability to collaborate and to deliver results has already been tested under circumstances that are very similar to what they will be during the project. +Resources to be mobilised +------------------------- +In any project there are three crucial resources to be mobilised. - -Resources to be deployed ------------------------- - -Show how the project will mobilise the critical mass of resources -(personnel, equipment, finance...) necessary for success. - -FIXME_LAURA: i (holger) moved the sprint information now completly -to B5.* because i don't think it belongs here. Can you restate what -is needed here? A description of the involvement of the Python community -and the audience we are reaching and who will be contributing? +The first is equipment. The PyPy project needs very little. We +would like to purchase a Projector, for use in displaying code +at Sprints. We would also like to purchase a portable printable +whiteboard. We draw a lot at Sprints, and would like to be able to +give every attendee a copy of the diagrams we made at the touch +of a button for use at home in between Sprints. Each of these +will cost somewhere between 1 and 2 thousand euros. + +The second is Finance. We don't need to mobilise outside financial +contributions, though we have some excellent connections. AB Strakt, +and The Python Business Forum have already arranged for bank +guarantees, should they be required by the Commission. The PBF and AB +Strakt both use KPMG as their standard auditor, and a KPMG recommended +bookkeeper who is familiar with EU project funding for their daily +business practices. Everybody else has already been involved in +successful EU projects, and will simply continue their usual +behaviour. + +And the third, and most important, is people. This is where this +Consortium really shines. The Open Source movement, is about +community, about people and not only about licensing. Successful Open +Source projects are based on sharing and trust, process rather than +product, and people. The same is true of Agile development +methods, as defined by the Agile Alliance. + +We are pioneers of a software development method, Sprint Driven +Development, which promises to mobilise people in a unique and +special way. We outline _what_ we do in Section 5 -- Project +Management. Here we would only like to speak briefly of _one +reason why we do this_. + +One of the classics of software management is Fred Brooks +_The Mythical Man Month_. FIXME how do we do references? + +In it he asserts: +'Adding people to a late software project makes it later'. This is +because the communications cost of 'bringing a new person up to +speed' outweighs the benefits you can get by putting them +on the project. And some projects are just too large -- the +burden of simply letting the left hand know what the right hand is doing +is crippling. + +Sprint Driven Development is an attempt to make a development +model which refutes this claim. What would you get if you didn't +have to 'bring people up to speed' because _they were already +aware of the project_? If you published everything you were doing +and made constant efforts to communicate where you were, and why +you were doing things to the base of programmers you might +_someday_ like to have on your project, then when time came to +add people to the late project (or just because the project +reached a point where there _was_ comparatively more work that +could be shared among programmers) they would already be mostly +ready to go. + +You could not do that in a proprietary environment. You could do this +in the Open Source Software community. A for-profit company cannot +afford to have very many people just sitting around, preparing, +absorbing knowledge, in case they might be needed somewhere. +Commercial software companies pay their people to write code. But +outside the company is the competition. Sharing is thus frowned +upon. + +But there are three groups who function this way, all the time. They +are always sitting around learning things. The first group are +students, and teachers. They have little or no time for outside +projects during the school year, but then have bursts of time in the +summer. The second are those people in industries which _have_ an +off-season -- tax preparers and fishermen both fit this pattern. And +the third are consultants, who are in-between contracts. Learning +things is called 'keeping current' and is essential to maintaining +competitiveness as a software consultant. I will call these people +'seasonal workers' though the term is not quite accurate. The +important thing is that you can mobilise them for short projects. +And the Open Source community _has_ mobilised them quite effectively. + +Sprinting is more than just an effort to maximise creativity by +putting all your creative people in a room and letting them bounce +ideas off each other and write code to test theories. (Though it is +that, too, and that is very important.) Sprinting is also an way to +constantly involve the community and disseminate knowledge, especially +the more difficult 'know-how', as opposed to 'know-that' which one can +read in books, papers, mailing lists and websites. It keeps people +'in the loop' -- ready to contribute should it be necessary -- +especially when combined with the sort of supplementary materials we +intend to produce. ('Know-that' is good too, it is just that it is +'know-how' that you need to bring a new person up to speed in a +project.) + +The PBF, as a non-profit, is a vehicle which is perfect for harnassing +the skills of the seasonal worker, particularly those in SMEs. SMEs +will not have to dedicate a full person to a project, full-time, but +can contribute 'only to one work package' or 'only to one task in one +work package' -- some small chunk that is reasonable for them to do. +Because they are members of a large cooperative, the notion of 'we +need 2 programmers for 2 weeks to do this' is feasible, because they +will already be in the loop, aware of what we are doing. Overall Financial Plan ---------------------- Show that the overall financial plan for the project is adequate. -FIXME_LAURA +FIXME_LAURA find out what the heck belongs here. Still no answer FIXME_NICO (get from Gantt?) From lac at codespeak.net Sun Oct 12 15:59:42 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 15:59:42 +0200 (MEST) Subject: [pypy-svn] rev 1771 - pypy/trunk/doc/funding Message-ID: <20031012135942.85E775A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 15:59:41 2003 New Revision: 1771 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Forgot something important. Before I forget. Also answers the question -- why do we have 2 boards-- because Guido doesn't want to get involved in management. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Sun Oct 12 15:59:41 2003 @@ -276,6 +276,8 @@ Further representatives on the Technical Board will be selected at the outset of the project. They will be appointed by a vote of everyone who has commit rights to the source repository and used them to contribute source code. +Guido van Rossum, the author of Python will act as an advisor to the +Technical Board. The responsibilities of the technical board are: From pedronis at codespeak.net Sun Oct 12 16:07:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 16:07:30 +0200 (MEST) Subject: [pypy-svn] rev 1773 - pypy/trunk/doc/funding Message-ID: <20031012140730.91D1A5A2EF@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 16:07:29 2003 New Revision: 1773 Added: pypy/trunk/doc/funding/endorsements.asc Log: added file with endorsements listed, it is valid ReST, don't know whether the formatting is really OK/what we want Added: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/endorsements.asc Sun Oct 12 16:07:29 2003 @@ -0,0 +1,41 @@ + + +- + Kaval Wireless Technologies Inc. uses Python in a variety of ways + in the development and production of its wireless coverage extension + systems, as well as using it in some of the products themselves. The + PyPy project holds great promise for improving the performance and + cross-platform nature of the Python environment, and I look forward + to seeing those improvements occur. + + Peter Hansen, P.Eng. + Director, Software Engineering, + Kaval Wireless Technologies Inc. + + +- + I'm interested in PyPy because it's about Python, the + pragmatic language that I use for my business and make my living with, and + because it promises pragmatic benefits (performance is my personal + #1, but there is a lot of other potential). + + Martijn Faassen FIXME... + + +- + As a vendor of development tools for Python programmers, we support PyPy + as an important step towards advancing the technology behind Python + programming language + + Stephan Deibel CEO(FIXME? or use President), Archaeopteryx Software, Inc. + + + +- + I've been a PBF board member from its founding, May 2002. I am + responsible for the Easter Europe liasons. I am an intermediary of + sorts between the PBF and the businesses located in the candidate + countries of Eastern Europe. The PBF is an important link between + businesses in the EU and the candidate countries. + + Jacek Artymiak FIXME... From pedronis at codespeak.net Sun Oct 12 16:30:38 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 16:30:38 +0200 (MEST) Subject: [pypy-svn] rev 1774 - pypy/trunk/doc/funding Message-ID: <20031012143038.9B5F85A2EF@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 16:30:37 2003 New Revision: 1774 Modified: pypy/trunk/doc/funding/FIXME Log: added entry for endorsements.asc Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 16:30:37 2003 @@ -29,6 +29,12 @@ Review NOT STARTED +endorsements.asc +add more +resolve FIXME about orgs/titles +where to use it? +NOT STARTED + B1.0_objectives Done? Check. NOT STARTED From jacob at codespeak.net Sun Oct 12 16:31:57 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 16:31:57 +0200 (MEST) Subject: [pypy-svn] rev 1775 - in pypy/trunk/doc/funding: . nico Message-ID: <20031012143157.90A375A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 16:31:56 2003 New Revision: 1775 Modified: pypy/trunk/doc/funding/JaH_project_plan.xml pypy/trunk/doc/funding/budget_summary.html pypy/trunk/doc/funding/nico/budget_summary.html pypy/trunk/doc/funding/project_gantt.png pypy/trunk/doc/funding/project_planning_sums.py pypy/trunk/doc/funding/project_resources.xml Log: Removed one PBF person. Made a few redistributions. Modified: pypy/trunk/doc/funding/JaH_project_plan.xml ============================================================================== --- pypy/trunk/doc/funding/JaH_project_plan.xml (original) +++ pypy/trunk/doc/funding/JaH_project_plan.xml Sun Oct 12 16:31:56 2003 @@ -31,7 +31,7 @@ 24 2004/01/01 - + @@ -44,9 +44,7 @@ - - - + @@ -54,11 +52,11 @@ 9 2004/01/01 - + - + - + @@ -66,27 +64,33 @@ ph1 - - -15 - - + + +9 + + + + + + +6 +wp6.1 + 9 - - + 9 - - + + @@ -113,7 +117,7 @@ 15 - + @@ -123,8 +127,8 @@ wp7 wp8 - - + + @@ -133,9 +137,9 @@ 6 wp7 wp8 - - + + Modified: pypy/trunk/doc/funding/budget_summary.html ============================================================================== --- pypy/trunk/doc/funding/budget_summary.html (original) +++ pypy/trunk/doc/funding/budget_summary.html Sun Oct 12 16:31:56 2003 @@ -1,33 +1,34 @@

Pypy budget

+ - - - + + + + - + - + + - - - - - - + + + - + - + + - - + +
strakthacker_strakt_124
strakthacker_strakt_224
straktpm_strakt_18
TOTALSTRAKT32160.0 kEUR9.30 %
cmpm_cm_121
TOTALCM21105.0 kEUR6.10 %
TOTALSTRAKT56280.0 kEUR17.50 %
cmhacker_cm_11
cmpm_cm_120
TOTALCM21105.0 kEUR6.56 %
logilabhacker_logilab_29
logilabhacker_logilab_122
TOTALLOGILAB31155.0 kEUR9.01 %
TOTALLOGILAB31155.0 kEUR9.69 %
ushhacker_ush_124
TOTALUSH24120.0 kEUR6.98 %
ushhacker_ush_michael_hudson12
TOTALUSH36180.0 kEUR11.25 %
dfkihacker_dfki_26
dfkihacker_dfki_120
dfkipm_dfki_18
TOTALDFKI34170.0 kEUR9.88 %
pbfhacker_pbf_824
pbfhacker_pbf_624
pbfhacker_pbf_724
pbfhacker_pbf_424
pbfhacker_pbf_516
TOTALDFKI34170.0 kEUR10.62 %
pbfhacker_pbf_christian_tismer24
pbfhacker_pbf_alex_martelli12
pbfhacker_pbf_218
pbfhacker_pbf_324
pbfhacker_pbf_holger_krekel16
pbfhacker_pbf_124
TOTALPBF178890.0 kEUR51.74 %
TOTALPBF94470.0 kEUR29.38 %
mpihacker_mpi_224
mpihacker_mpi_124
TOTALMPI24120.0 kEUR6.98 %
TOTALpersonnel3441720.0 kEUR
TOTALMPI48240.0 kEUR15.00 %
TOTALpersonnel3201600.0 kEUR
TOTALsprints288 kEURone sprint every two months for two years and 12 persons at 2 kEUR each
TOTALmeetings84 kEUR3 meetings per year for 7 partners at 2000 EUR per participant
TOTALmanagement105.0 kEURadministrative tasks for each partner == 4 weeks over six months periods
-

TOTAL BUDGET 2113.0 kEUR

+

TOTAL BUDGET 1993.0 kEUR

Modified: pypy/trunk/doc/funding/nico/budget_summary.html ============================================================================== --- pypy/trunk/doc/funding/nico/budget_summary.html (original) +++ pypy/trunk/doc/funding/nico/budget_summary.html Sun Oct 12 16:31:56 2003 @@ -1,33 +1 @@

Pypy budget

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
strakthacker_strakt_124
straktpm_strakt_18
TOTALSTRAKT32160.0 kEUR9.30 %
cmpm_cm_121
TOTALCM21105.0 kEUR6.10 %
logilabhacker_logilab_29
logilabhacker_logilab_122
TOTALLOGILAB31155.0 kEUR9.01 %
ushhacker_ush_124
TOTALUSH24120.0 kEUR6.98 %
dfkihacker_dfki_26
dfkihacker_dfki_120
dfkipm_dfki_18
TOTALDFKI34170.0 kEUR9.88 %
pbfhacker_pbf_824
pbfhacker_pbf_624
pbfhacker_pbf_724
pbfhacker_pbf_424
pbfhacker_pbf_516
pbfhacker_pbf_218
pbfhacker_pbf_324
pbfhacker_pbf_124
TOTALPBF178890.0 kEUR51.74 %
mpihacker_mpi_124
TOTALMPI24120.0 kEUR6.98 %
TOTALpersonnel3441720.0 kEUR
TOTALsprints288 kEURone sprint every two months for two years and 12 persons at 2 kEUR each
TOTALmeetings84 kEUR3 meetings per year for 7 partners at 2000 EUR per participant
TOTALmanagement105.0 kEURadministrative tasks for each partner == 4 weeks over six months periods
-

TOTAL BUDGET 2113.0 kEUR

- Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/project_planning_sums.py ============================================================================== --- pypy/trunk/doc/funding/project_planning_sums.py (original) +++ pypy/trunk/doc/funding/project_planning_sums.py Sun Oct 12 16:31:56 2003 @@ -1,8 +1,14 @@ import re +import sys -f = file('project_planning.xml', 'r') +if len(sys.argv) == 2: + filename = sys.argv[1] +else: + filename = 'project_planning.xml' -task = re.compile(r'^ - + + From arigo at codespeak.net Sun Oct 12 17:01:07 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 12 Oct 2003 17:01:07 +0200 (MEST) Subject: [pypy-svn] rev 1777 - pypy/trunk/doc/funding Message-ID: <20031012150107.0C9365A2EF@thoth.codespeak.net> Author: arigo Date: Sun Oct 12 17:01:06 2003 New Revision: 1777 Modified: pypy/trunk/doc/funding/FIXME Log: Assigned WP10 description to Alastair Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 17:01:06 2003 @@ -109,7 +109,8 @@ B6.0_detailed_implementation REVIEWED: hpk -READY FOR REVIEW: Bea or Jah please review the section "Risks" +READY FOR REVIEW: FIXME_BEA or FIXME_JACOB please review the section "Risks" +NOT STARTED: FIXME_ALASTAIR fill in paragraph about WP10 B6.4_gantt Needs checking. From tismer at codespeak.net Sun Oct 12 17:07:16 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 17:07:16 +0200 (MEST) Subject: [pypy-svn] rev 1778 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031012150716.2EB085A2EF@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 17:07:14 2003 New Revision: 1778 Modified: pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: small format corrections. Built a new PDF Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 17:07:14 2003 @@ -363,12 +363,12 @@ We are pioneers of a software development method, Sprint Driven Development, which promises to mobilise people in a unique and -special way. We outline _what_ we do in Section 5 -- Project -Management. Here we would only like to speak briefly of _one -reason why we do this_. +special way. We outline *what* we do in Section 5 -- Project +Management. Here we would only like to speak briefly of *one +reason why we do this*. One of the classics of software management is Fred Brooks -_The Mythical Man Month_. FIXME how do we do references? +*The Mythical Man Month*. FIXME how do we do references? In it he asserts: 'Adding people to a late software project makes it later'. This is @@ -380,13 +380,13 @@ Sprint Driven Development is an attempt to make a development model which refutes this claim. What would you get if you didn't -have to 'bring people up to speed' because _they were already -aware of the project_? If you published everything you were doing +have to 'bring people up to speed' because *they were already +aware of the project*? If you published everything you were doing and made constant efforts to communicate where you were, and why you were doing things to the base of programmers you might -_someday_ like to have on your project, then when time came to +*someday* like to have on your project, then when time came to add people to the late project (or just because the project -reached a point where there _was_ comparatively more work that +reached a point where there *was* comparatively more work that could be shared among programmers) they would already be mostly ready to go. @@ -449,6 +449,7 @@ Project acronym - +:: Short Names Partner 1 Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Sun Oct 12 17:07:14 2003 @@ -80,7 +80,7 @@ "empty", "", "fake sublevel3", - "+++++++++++++++", + "::::::::::::::::", "empty", "", ":DELETE:END", Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Sun Oct 12 17:14:58 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 17:14:58 +0200 (MEST) Subject: [pypy-svn] rev 1779 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031012151458.7424F5A2EF@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 17:14:56 2003 New Revision: 1779 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: corrected bullets in B6. New PDF. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Sun Oct 12 17:14:56 2003 @@ -16,11 +16,11 @@ The PyPy project can be roughly divided into three phases, the last two of which are somewhat independent from each other: -o Phase 1: The core of PyPy itself must first be developed. +- Phase 1: The core of PyPy itself must first be developed. -o Phase 2: This code base can be used as an research/integration platform of choice. +- Phase 2: This code base can be used as an research/integration platform of choice. -o Phase 3: Specific applications can be implemented and disseminated. +- Phase 3: Specific applications can be implemented and disseminated. Moreover, several project-long infrastructure tasks are of paramount importance. In particular, coordination is assured by the project coordinator in workpackage WP01_, with the help of the management and technical boards, as described in section B5. It involves the collection and monitoring of monthly status reports, reporting to the EU, organising sprints and maintaining an internal web site in collaboration with the maintenance workpackage. @@ -41,11 +41,11 @@ The first goal is to develop a reasonably complete Python interpreter written in Python. It must be entierely compatible with the language specification. It consists of the following major parts: -o A *bytecode compiler,* which translates Python source code into an internal intermediate representation, the *bytecode.* +- A *bytecode compiler,* which translates Python source code into an internal intermediate representation, the *bytecode.* -o A *bytecode interpreter,* which interprets bytecodes and manages the supporting internal structures (frames, exception tracebacks...). It considers objects as black boxes and delegates all individual operations on them to a library of built-in types, the *Object Space.* +- A *bytecode interpreter,* which interprets bytecodes and manages the supporting internal structures (frames, exception tracebacks...). It considers objects as black boxes and delegates all individual operations on them to a library of built-in types, the *Object Space.* -o An *Object Space,* which captures the semantics of the various types of the language. +- An *Object Space,* which captures the semantics of the various types of the language. This subdivision is common among interpreter implementations, although we place special emphasis on the library and its separation from the bytecode interpreter. The implementation will closely follow the current reference C implementation (CPython). It is thus expected to be relatively straightforward, changing only a few design decisions (mainly with respect to the Object Space separation of concerns), and changing strictly nothing to the Python language itself. @@ -83,15 +83,15 @@ The flexibility in PyPy allows a number of designs to be reconsidered; better yet, it allows different design decisions to coexist. Indeed, most "hard" issues in interpreters have no obvious best solution; they are all depend in complicated ways to the specific details of the runtime environment and on the particular application considered and its possibly evolving context. PyPy will provide a good platform to experiment with and compare empirically several different implementations for many of these issues. For example: -o The language's core object types can have several implementations with different trade-offs. To experimented with this, we will write a collection of alternatives in the "standard" Object Space implementation and heuristics to select between them. This kind of research effort is common, but PyPy can provide a good platform for real-world comparisons, and to help isolate which particular choices have which effects in an otherwise unchanged environment. Such data is notoriously hard to obtain in monolithic interpreters. This is the focus of WP06_. +- The language's core object types can have several implementations with different trade-offs. To experimented with this, we will write a collection of alternatives in the "standard" Object Space implementation and heuristics to select between them. This kind of research effort is common, but PyPy can provide a good platform for real-world comparisons, and to help isolate which particular choices have which effects in an otherwise unchanged environment. Such data is notoriously hard to obtain in monolithic interpreters. This is the focus of WP06_. -o Similarily, as described above, pervasive design decisions can be experimented with by tailoring the translator. This is the focus of WP07_. +- Similarily, as described above, pervasive design decisions can be experimented with by tailoring the translator. This is the focus of WP07_. We will in particular investigate in detail two specific ways to customize the translator: -o Generating Continuation Passing Style (CPS) low-level code. This makes the advanced notion of continuation available for the programmer; but -- most importantly in our case -- it allows the development, with the help of an appropriate runtime system, to support massive parallelism. Indeed, in almost any OS, native threads are not appropriate for massive usage. Applications (e.g. web servers handling thousands of connections) have to somehow emulate parallelism explicitely. Soft-threads are an ideal target for language integration. This work (also part of WP07_) would consist of exploiting this idea, which has been first tried for Python in the Stackless project. +- Generating Continuation Passing Style (CPS) low-level code. This makes the advanced notion of continuation available for the programmer; but -- most importantly in our case -- it allows the development, with the help of an appropriate runtime system, to support massive parallelism. Indeed, in almost any OS, native threads are not appropriate for massive usage. Applications (e.g. web servers handling thousands of connections) have to somehow emulate parallelism explicitely. Soft-threads are an ideal target for language integration. This work (also part of WP07_) would consist of exploiting this idea, which has been first tried for Python in the Stackless project. -o Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: instead of actually performing any operation between two objects, we *generate* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is to translate individual operations to processor instructions, together with a supporting runtime systems. This is defined by WP08_. +- Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: instead of actually performing any operation between two objects, we *generate* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is to translate individual operations to processor instructions, together with a supporting runtime systems. This is defined by WP08_. In dynamic languges, the truth behind JIT compiling is a bit more involved than the above paragraph suggests. All the "standard" operations in Python, including the intuitively simple ones, are actually relatively complex because they depend heavily on the runtime type of the involved objects. This complex code is already written in detail in the "standard" Object Space. Thus the JIT compiler will work by abstract interpretation of RPython code, i.e. abstract interpretation of the interpreter itself (as opposed to user application code). This is similar to the ideas behind the translator, which operates on the RPython source (i.e. the bytecode interpreter and the standard Object Space). We plan to write the dynamic part of the JIT as a plug-in to the translator: instead of generating C code that is the direct translation of PyPy, we will generate C code that itself generates machine code. This extra indirection has large benefits: the operations the JIT need to be taught about are only the ones allowed in RPython. The resulting piece of C code would thus be the JIT-enabled version of PyPy. @@ -103,9 +103,9 @@ In the context of the PyPy project, we will not replace the interpreter altogether, but experiment with extensions: -o involving feedback from the Python community, we will experiment with the proposed language extensions that are deemed worthy by the CPython developers. Numerous PEPs (Python Extension Proposals), for example, need an experimental implementation for testing before they can be accepted or rejected for integration into CPython; not only is PyPy a good platform to test them on, but this would give PyPy an active part in the effort of keeping synchronised with the development of CPython. (The role of WP03_ is to keep track of the ongoing development of the Python language and its CPython implementation, for which we will also look for existing solutions to automate the "passive" part of this effort at least partially.) +- involving feedback from the Python community, we will experiment with the proposed language extensions that are deemed worthy by the CPython developers. Numerous PEPs (Python Extension Proposals), for example, need an experimental implementation for testing before they can be accepted or rejected for integration into CPython; not only is PyPy a good platform to test them on, but this would give PyPy an active part in the effort of keeping synchronised with the development of CPython. (The role of WP03_ is to keep track of the ongoing development of the Python language and its CPython implementation, for which we will also look for existing solutions to automate the "passive" part of this effort at least partially.) -o WP09_ involves the research and development of techniques inspired from logic programming. An inference engine already exists in the python-logic libraries. Successful integration of these concepts, far from regular imperative programming, would provide a validation of the level of flexibility we achieved in Phase 1. It would also provide an essential starting point for WP10_, described below. +- WP09_ involves the research and development of techniques inspired from logic programming. An inference engine already exists in the python-logic libraries. Successful integration of these concepts, far from regular imperative programming, would provide a validation of the level of flexibility we achieved in Phase 1. It would also provide an essential starting point for WP10_, described below. Phase 3 @@ -117,11 +117,11 @@ The applications we have selected can be categorized into the following categories: -o Language-level object models; +- Language-level object models; -o Language-level extensions; +- Language-level extensions; -o Interpreter adaptations. +- Interpreter adaptations. This is also where we expect third-parties to build on top of our platform. @@ -133,9 +133,9 @@ **Security** is an important and difficult aspect that requires knowledge and support at a wide number of levels to be effective. Programming languages can help contribute to security at their level. Different object security models are possible: -o The language can be artificially restricted, with dangerous operations taken out and thus impossible to achieve by interpreted programs. In effect, this amount to building a stripped-down interpreter. +- The language can be artificially restricted, with dangerous operations taken out and thus impossible to achieve by interpreted programs. In effect, this amount to building a stripped-down interpreter. -o Access to some objects can be denied to only some (untrusted) parts of the interpreted program; or access can go though proxies performing some kind of access checks. This is a more flexible solution, but it is more difficult to implement efficiently. Explicit checks for each access consume time. In PyPy this could be implemented as an Object Space checking and delegating operations to another Object Space. +- Access to some objects can be denied to only some (untrusted) parts of the interpreted program; or access can go though proxies performing some kind of access checks. This is a more flexible solution, but it is more difficult to implement efficiently. Explicit checks for each access consume time. In PyPy this could be implemented as an Object Space checking and delegating operations to another Object Space. For comparison, CPython used to implement security-by-absence-of-reference: untrusted parts of a program could supposedly not obtain a reference to a dangerous object. This model, called "RExec", has been recognized as fragile and hard to maintain. It has been removed from CPython. @@ -214,25 +214,25 @@ Other tasks include: -o Subversion maintenance (e.g. notification hooks and pre/post-commit restrictions); +- Subversion maintenance (e.g. notification hooks and pre/post-commit restrictions); -o providing access over http/https and ssh server; +- providing access over http/https and ssh server; -o building extensions for automatic document extraction; +- building extensions for automatic document extraction; -o maintenance or setup of mailing lists; +- maintenance or setup of mailing lists; -o implementing a search facility over all content; +- implementing a search facility over all content; -o maintaining or extending the issue tracker; +- maintaining or extending the issue tracker; -o maintaining and enhancing the website infrastructure; +- maintaining and enhancing the website infrastructure; -o performing backups for all relevant information/code; +- performing backups for all relevant information/code; -o setting up a mirror repository which is kept up-to-date and which can be used readonly in case of failure of the main repository; +- setting up a mirror repository which is kept up-to-date and which can be used readonly in case of failure of the main repository; -o taking care of regular repository backups, designing a strict backup policy suitable for the project, and adhering to it. +- taking care of regular repository backups, designing a strict backup policy suitable for the project, and adhering to it. :DELETE:BEGIN @@ -253,13 +253,13 @@ The initial design decisions have already been discussed during the young history of the project and its first 4 sprints, and a basic working prototype has already been written as a proof of concept. We thus take for granted that the risks associated with the following decisions are almost non-existent at this point: -o writing a Python interpreter in Python is not only possible but it is done much faster and easily than in C. +- writing a Python interpreter in Python is not only possible but it is done much faster and easily than in C. -o following some basic design decisions of CPython (the internals of whom most of us are intimately familiar with) leads to fast development and good results. +- following some basic design decisions of CPython (the internals of whom most of us are intimately familiar with) leads to fast development and good results. -o pluggable Object Spaces do work. Several proof-of-concept Object Spaces have been successfully tried. +- pluggable Object Spaces do work. Several proof-of-concept Object Spaces have been successfully tried. -o Object Spaces are really a suitable abstraction for abstract/symbolic interpretation. Control flow of simple functions have been derived using an Object Space. +- Object Spaces are really a suitable abstraction for abstract/symbolic interpretation. Control flow of simple functions have been derived using an Object Space. Moreover, simple type analysis and generation of low-level code from a low-level representation is common in a variety of contexts, so we don't expect particular problems from there either. Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From lac at codespeak.net Sun Oct 12 17:19:26 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 17:19:26 +0200 (MEST) Subject: [pypy-svn] rev 1780 - pypy/trunk/doc/funding Message-ID: <20031012151926.2233D5A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 17:19:26 2003 New Revision: 1780 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: made some changes Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 17:19:26 2003 @@ -209,7 +209,7 @@ ++++ has pervious experience of being a project coordinator in EU projects, ensuring smooth communication between the project and the FP6 project -officer. +officer. Max Planck Institut +++++++++++++++++++ @@ -237,11 +237,18 @@ as well as showcasing how to apply the results of the project in a major business application. -Strakt will also bring Tim Peters to the project. Tim has for several -years been a core developer of the present major implementation of -Python, what we call CPython. Apart from being an outstanding -programmer, Tim has intimate knowledge about all the details of the -Python language definition. +Strakt will also bring Tim Peters to the project. Tim has always been +a core developer of the Python langauge, what we call CPython. Apart +from being an outstanding programmer, Tim has intimate knowledge about +all the details of the Python language definition. As Director of the +Python Software foundation, Tim Peters is also responsible for the +Intellectual Property of the existing Python language. Popular with +the Python community at large, Tim was deemed to be 'too excellent' +and received the humourous but immensely prestigeous title 'Timbot', +becoming the first of the 'Three Bots' of comp.lang.python. Such +awards speak not only of his technical excellence but his constant +willingness to engage in an ongoing dialog with the Python community +at large. With 12 full time and 6 part time employees, Strakt is an SME representative. @@ -249,16 +256,24 @@ Alex Martelli (FIXME: Where does Alex go? PBF?) +++++++++++++++++++++++++++++++++++++++++++++++ -Being a prolific writer and popular speaker as well as a Python -programmer, Alex is uniquely suited for widely disseminating the -progress and the results of the project. +Alex Martelli, a member of both the core Python developers and of the +Python Business Forum, is author of the best-selling book "Python in a +Nutshell", co-editor of the collectively authored "Python Cookbook", +popular for his articles on both printed and online venues, where for +excellence he was voted the title 'Martellibot' by the Python +community at large. Dr. Martelli has a history of leading +multi-cultural software development teams and providing presentations +and reports in various formats to audiences at all levels of technical +expertise. His team will include members with a diversity of languages +and backgrounds, which will prove crucial in the dissemination of +knowledge. -Technischen Universit?t Berlin +Technischen Universit?t Berlin FIXME where is Tomek now? ++++++++++++++++++++++++++++++ will have Tomasz Meka doing his diploma work for a Computer Science degree. We believe that the Pypy project opens up new avenues for studies and research from undergraduate level to advanced researchers. -We hope to verify this through Tomeks work in the project. +We hope to verify this through Tomek's work in the project. Changemaker +++++++++++ @@ -286,15 +301,17 @@ Groups (SIGs). Each SIG controls its own activities but reports to the board in financial matters. -The PBF will form a Pypy SIG with **Holger Krekel** as chairman to +The PBF will form a PyPy SIG with **Holger Krekel** as chairman to handle its involvement in the project. -The PBF brings a number of SME parties to the project who will be -eager to apply Pypy to their various products. The selection of which -products and companies that should do validations will be made later -in the project, since it is impossible to tell which ones will produce -the most useful results when validations starts some 24 months from -now. +In addition to providing coding expertise, and such Stakeholding, +The PBF also brings a number of SME parties to the project who are +eager to apply PyPy to their various products. They are user Stakeholders, +and the primary intended audience of some of our reports. Many of them, +on their own, have expressed a desire to encorporate PyPy into their +products as soon as it is finished and stable. We will report on +their progress to the Commission as well, even though they are not +to be funded by the Commission, as an extra point of reference. **Holger Krekel** will also be an active PBF representative in the project, with a focus on devlopment, packaging and dissemination @@ -355,11 +372,16 @@ behaviour. And the third, and most important, is people. This is where this -Consortium really shines. The Open Source movement, is about -community, about people and not only about licensing. Successful Open -Source projects are based on sharing and trust, process rather than -product, and people. The same is true of Agile development -methods, as defined by the Agile Alliance. +Consortium really shines. Not only have we already attracted some of +the top people in the Python community in this project, we also have a +plan to continue to attract the interest, support, and constructive +criticism of the very best. The Open Source movement is all about +community. This fact is often overlooked by people who are +discovering us for the first time. It is all about people and not +only about licensing. Successful Open Source projects are based on +sharing and trust, process rather than product, and key people. The +same is true of Agile development methods, as defined by the Agile +Alliance. We are pioneers of a software development method, Sprint Driven Development, which promises to mobilise people in a unique and @@ -370,13 +392,12 @@ One of the classics of software management is Fred Brooks *The Mythical Man Month*. FIXME how do we do references? -In it he asserts: -'Adding people to a late software project makes it later'. This is -because the communications cost of 'bringing a new person up to -speed' outweighs the benefits you can get by putting them -on the project. And some projects are just too large -- the -burden of simply letting the left hand know what the right hand is doing -is crippling. +In it he asserts the then-controversial, and now well-established +claim: 'Adding people to a late software project makes it later'. +This is because the communications cost of 'bringing a new person up +to speed' outweighs the benefits you can get by putting them on the +project. And some projects are just too large -- the burden of simply +letting the left hand know what the right hand is doing is crippling. Sprint Driven Development is an attempt to make a development model which refutes this claim. What would you get if you didn't @@ -390,26 +411,24 @@ could be shared among programmers) they would already be mostly ready to go. -You could not do that in a proprietary environment. You could do this +You could not do that in a proprietary environment. You _can_ do this in the Open Source Software community. A for-profit company cannot afford to have very many people just sitting around, preparing, absorbing knowledge, in case they might be needed somewhere. Commercial software companies pay their people to write code. But -outside the company is the competition. Sharing is thus frowned -upon. +outside the company is the competition. Sharing is thus frowned upon. But there are three groups who function this way, all the time. They are always sitting around learning things. The first group are -students, and teachers. They have little or no time for outside -projects during the school year, but then have bursts of time in the -summer. The second are those people in industries which _have_ an -off-season -- tax preparers and fishermen both fit this pattern. And -the third are consultants, who are in-between contracts. Learning -things is called 'keeping current' and is essential to maintaining -competitiveness as a software consultant. I will call these people -'seasonal workers' though the term is not quite accurate. The -important thing is that you can mobilise them for short projects. -And the Open Source community _has_ mobilised them quite effectively. +students, and teachers. The second are those people in industries +which have an off-season -- tax preparers and fishermen both fit this +pattern. And the third are software consultants, both small and those +in large IT consulting firms. Learning things is called 'keeping +current' and is essential to maintaining competitiveness as a software +consultant. I will call these people 'seasonal workers' though the +term is not quite accurate. The important thing is that you can +mobilise them for short projects. And the Open Source community _has_ +mobilised them quite effectively. Sprinting is more than just an effort to maximise creativity by putting all your creative people in a room and letting them bounce From jacob at codespeak.net Sun Oct 12 17:23:00 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 17:23:00 +0200 (MEST) Subject: [pypy-svn] rev 1781 - pypy/trunk/doc/funding Message-ID: <20031012152300.C89F05A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 17:22:59 2003 New Revision: 1781 Modified: pypy/trunk/doc/funding/B6.4_gantt.txt Log: Missing newline. Modified: pypy/trunk/doc/funding/B6.4_gantt.txt ============================================================================== --- pypy/trunk/doc/funding/B6.4_gantt.txt (original) +++ pypy/trunk/doc/funding/B6.4_gantt.txt Sun Oct 12 17:22:59 2003 @@ -2,4 +2,4 @@ ----------------------------------------------- .. image:: project_gantt.png - :scale: 70 \ No newline at end of file + :scale: 70 From jacob at codespeak.net Sun Oct 12 17:29:54 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 17:29:54 +0200 (MEST) Subject: [pypy-svn] rev 1782 - pypy/trunk/doc/funding Message-ID: <20031012152954.388B65A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 17:29:53 2003 New Revision: 1782 Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt Log: Added months. Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.5_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Sun Oct 12 17:29:53 2003 @@ -3,12 +3,6 @@ Workpackage List ==================== -:DELETE:BEGIN - -FIXME_LAURA FIXME_NICO: finish this - -:DELETE:END - .. |wpn| replace:: Work-package No .. |lcn| replace:: Lead contractor No .. |pm| replace:: Person-months @@ -20,33 +14,33 @@ ===== ==================================================== ===== ==== ==== ==== ==== ======== |wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp ===== ==================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management ?? 0 24 DFKI +WP01_ Coordination and Management 24 0 24 DFKI ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Infrastructure and Tools ?? 0 24 PBF +WP02_ Infrastructure and Tools 12 0 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python ?? 0 24 PBF +WP03_ Synchronisation with Standard Python 12 0 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core ?? 0 9 PBF +WP04_ The PyPy Core 45 0 9 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation ?? 0 9 USH +WP05_ The PyPy Translation 45 0 9 USH ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Core Optimisations ?? 9 24 USH +WP06_ Core Optimisations 24 9 24 USH ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations ?? 9 18 PBF +WP07_ Translator Optimisations 31 9 18 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Dynamic Optimisations ?? 9 18 PBF +WP08_ Dynamic Optimisations 36 9 18 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Extend Language with Search and Logic ?? 9 24 DFKI +WP09_ Extend Language with Search and Logic 24 9 24 DFKI ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Extend Language with Aspects and Contracts ?? 9 24 Logilab +WP10_ Extend Language with Aspects and Contracts 15 9 24 Logilab ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Embed in Specialized Hardware ?? 9 24 ChangeMaker +WP11_ Embed in Specialized Hardware 10 9 24 ChangeMaker ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Implement Security, Distribution and Persistence ?? 18 24 PBF +WP12_ Implement Security, Distribution and Persistence 24 18 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Integration and Configuration ?? 18 24 PBF +WP13_ Integration and Configuration 18 18 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination ?? 0 24 Strakt +WP14_ Project Documentation and Dissemination 24 0 24 Strakt ===== ==================================================== ===== ==== ==== ==== ==== ======== note: WP11 is the stuff concerning Axis and ChangeMaker. needs to be written \ No newline at end of file From tismer at codespeak.net Sun Oct 12 17:41:18 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 17:41:18 +0200 (MEST) Subject: [pypy-svn] rev 1784 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031012154118.4F70A5A2EF@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 17:41:16 2003 New Revision: 1784 Modified: pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: small fixes. Bold style for top-level TOC entries. New PDF. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 17:41:16 2003 @@ -268,8 +268,8 @@ and backgrounds, which will prove crucial in the dissemination of knowledge. -Technischen Universit?t Berlin FIXME where is Tomek now? -++++++++++++++++++++++++++++++ +Technische Universit?t Berlin (FIXME: where is Tomek now?) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ will have Tomasz Meka doing his diploma work for a Computer Science degree. We believe that the Pypy project opens up new avenues for studies and research from undergraduate level to advanced researchers. Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From jacob at codespeak.net Sun Oct 12 17:49:57 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 17:49:57 +0200 (MEST) Subject: [pypy-svn] rev 1785 - pypy/trunk/doc/funding Message-ID: <20031012154957.1A4395A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 17:49:56 2003 New Revision: 1785 Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp12_validations.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Log: Modified times Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Sun Oct 12 17:49:56 2003 @@ -4,7 +4,7 @@ .. |wp| replace:: WP04 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 27 +.. |m1| replace:: 18 .. |p2| replace:: MPI .. |m2| replace:: 9 .. |p3| replace:: DFKI Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Sun Oct 12 17:49:56 2003 @@ -4,13 +4,13 @@ .. |wp| replace:: WP05 .. |start| replace:: 0 .. |p1| replace:: PBF -.. |m1| replace:: 27 +.. |m1| replace:: 3 .. |p2| replace:: STRAKT -.. |m2| replace:: 9 +.. |m2| replace:: 18 .. |p3| replace:: USH .. |m3| replace:: 9 -.. |p4| replace:: |e| -.. |m4| replace:: |e| +.. |p4| replace:: MPI +.. |m4| replace:: 9 .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Sun Oct 12 17:49:56 2003 @@ -2,8 +2,8 @@ .. |title| replace:: Core Optimizations .. |wp| replace:: WP06 -.. |start| replace:: 0 -.. |p1| replace:: USH +.. |start| replace:: 9 +.. |p1| replace:: MPI .. |m1| replace:: 15 .. |p2| replace:: PBF .. |m2| replace:: 9 Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Sun Oct 12 17:49:56 2003 @@ -2,9 +2,9 @@ .. |title| replace:: Translator Optimizations .. |wp| replace:: WP07 -.. |start| replace:: 0 +.. |start| replace:: 9 .. |p1| replace:: PBF -.. |m1| replace:: 31 +.. |m1| replace:: 22 .. |p2| replace:: |e| .. |m2| replace:: |e| .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt Sun Oct 12 17:49:56 2003 @@ -2,13 +2,13 @@ .. |title| replace:: Dynamic Optimizations .. |wp| replace:: WP08 -.. |start| replace:: 0 +.. |start| replace:: 9 .. |p1| replace:: PBF -.. |m1| replace:: 18 +.. |m1| replace:: 9 .. |p2| replace:: MPI .. |m2| replace:: 9 .. |p3| replace:: STRAKT -.. |m3| replace:: 9 +.. |m3| replace:: 18 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sun Oct 12 17:49:56 2003 @@ -10,7 +10,7 @@ .. |title| replace:: Extend Language with Search and Logic .. |wp| replace:: WP09 -.. |start| replace:: 0 +.. |start| replace:: 18 .. |p1| replace:: DFKI .. |m1| replace:: 15 .. |p2| replace:: Logilab Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sun Oct 12 17:49:56 2003 @@ -1,19 +1,8 @@ .. include:: crossreferences.asc -:DELETE:BEGIN - -FIXME -participants: Logilab and DFKI -time estimates: ? -roughly 1,5 person each --> 3 person total for 1 year (?) - -FIXME Semantic Web in the title ? - -:DELETE:END - .. |title| replace:: Extend Language with Aspects and Contracts .. |wp| replace:: WP10 -.. |start| replace:: 0 +.. |start| replace:: 18 .. |p1| replace:: Logilab .. |m1| replace:: 9 .. |p2| replace:: DFKI Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 17:49:56 2003 @@ -1,19 +1,8 @@ .. include:: crossreferences.asc -:DELETE:BEGIN - -FIXME -participants: Logilab and DFKI -time estimates: ? -roughly 1,5 person each --> 3 person total for 1 year (?) - -FIXME Semantic Web in the title ? - -:DELETE:END - .. |title| replace:: Embed in Specialized Hardware .. |wp| replace:: WP11 -.. |start| replace:: 0 +.. |start| replace:: 18 .. |p1| replace:: Logilab .. |m1| replace:: 9 .. |p2| replace:: CM Modified: pypy/trunk/doc/funding/B6.7.wp12_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_validations.txt Sun Oct 12 17:49:56 2003 @@ -2,11 +2,11 @@ .. |title| replace:: Implement Security, Distribution and Persistence .. |wp| replace:: WP12 -.. |start| replace:: WP07, WP08 +.. |start| replace:: 18 .. |p1| replace:: PBF -.. |m1| replace:: 18 +.. |m1| replace:: 12 .. |p2| replace:: STRAKT -.. |m2| replace:: 6 +.. |m2| replace:: 12 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Sun Oct 12 17:49:56 2003 @@ -2,11 +2,11 @@ .. |title| replace:: Integration and Configuration .. |wp| replace:: WP13 -.. |start| replace:: WP07, WP08 +.. |start| replace:: 18 .. |p1| replace:: PBF -.. |m1| replace:: 12 +.. |m1| replace:: 6 .. |p2| replace:: MPI -.. |m2| replace:: 6 +.. |m2| replace:: 12 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| From jacob at codespeak.net Sun Oct 12 18:11:07 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 18:11:07 +0200 (MEST) Subject: [pypy-svn] rev 1786 - pypy/trunk/doc/funding Message-ID: <20031012161107.DEC205A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 18:11:06 2003 New Revision: 1786 Added: pypy/trunk/doc/funding/project_planning.xml.orig - copied unchanged from rev 1784, pypy/trunk/doc/funding/project_planning.xml Removed: pypy/trunk/doc/funding/project_planning.xml Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/FIXME Log: Changing planning file. Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sun Oct 12 18:11:06 2003 @@ -1,13 +1,5 @@ .. include:: crossreferences.asc -:DELETE:BEGIN - -FIXME -partecipants: Logilab, PBF, (DFKI?) -time estimates: ? - -:DELETE:END - .. |title| replace:: Extend Language with Search and Logic .. |wp| replace:: WP09 .. |start| replace:: 18 Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 18:11:06 2003 @@ -8,6 +8,88 @@ B0.0_preamble Remove garbage +Fix short names +Fix Coordinator details + +B0.1_summary +Check Full Title, do we want this way +Finish, polish Strategic Objectives + +Retouch Alistair's Abstract (see pypy-funding comments) +it is actually in alistair_abstract.asc ! + - maybe mention sprints in the abstract? agile methodologies? + - > The project will achieve its goals principally by building on the + > strengths of the current open source developer community. + + i am probably too sensitive here but this doesn't seem to imply + that we are *part* of the open-source developer community. Many + companies have tried to "exploit" the open-source dev-community. + we don't want that. we want to contribute, connect and integrate. + +B1.0_objectives +Review + +B2.relevance_to_IST +The following need writing: +Links and Complimentary with Other Programmes +Contribution to Community Social Objectives + +B3.impact +FIXME include http://www.python.org/peps/pep-0001.html +FIXME: ADD MORE conferences +Review + +B4.resources +Add organisations +FIXME's +Add formatting to people +Review + +B5.0_manage_bea +2 diagrams to be added +FIXMEs +Review + +B6.0_detailed_implementation +Remove garbage +Review + +B6.4_gantt +Make it show on the webite. + +B6.5_workpackage_list +Get lead contractors in the correct column +Get the lead contractors right + +B6.6_deliverables_list +To be done. + +B6.7.wp01_management + +B6.7.wp02_maintenance +B6.7.wp03_synchronisation +B6.7.wp04_core +B6.7.wp05_translation +B6.7.wp06_core_optimisations +B6.7.wp07_translator_optimisations +B6.7.wp08_dynamic_optimisation +B6.7.wp09_search_and_logic +Write Milestones and Expected Result + +B6.7.wp10_aspects_and_contracts +B6.7.wp11_embed_in_hardware +B6.7.wp12_validations +B6.7.wp13_integration_config +B6.7.wp14_documentation +B7.0_other_issues + + + + + + +B0.0_preamble +Remove garbage fix fixmes NOT STARTED Deleted: /pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- /pypy/trunk/doc/funding/project_planning.xml Sun Oct 12 18:11:06 2003 +++ (empty file) @@ -1,156 +0,0 @@ - - - - - - - - -24 -2004/01/01 - - - - - - - - -24 -2004/01/01 - - - - - -24 -2004/01/01 - - - - - - - - -9 -2004/01/01 - - - - - - - - - - - -9 -2004/01/01 - - - - - - - - - - -ph1 - - - -15 - - - - - - -9 - - - - - - - - -9 - - - - - - - - - -ph1 - - - -15 - - - - - - -9 - - - - - - -15 - - - - - - -6 -wp7 -wp8 - - - - - - - - -6 -wp7 -wp8 - - - - - - - - -24 -2004/01/01 - - - - - - - From jacob at codespeak.net Sun Oct 12 18:12:26 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 18:12:26 +0200 (MEST) Subject: [pypy-svn] rev 1787 - pypy/trunk/doc/funding Message-ID: <20031012161226.0025E5A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 18:12:26 2003 New Revision: 1787 Added: pypy/trunk/doc/funding/project_planning.xml - copied unchanged from rev 1784, pypy/trunk/doc/funding/JaH_project_plan.xml Removed: pypy/trunk/doc/funding/JaH_project_plan.xml Log: Changing planning file. Deleted: /pypy/trunk/doc/funding/JaH_project_plan.xml ============================================================================== --- /pypy/trunk/doc/funding/JaH_project_plan.xml Sun Oct 12 18:12:26 2003 +++ (empty file) @@ -1,160 +0,0 @@ - - - - - - - - -24 -2004/01/01 - - - - - - - - -24 -2004/01/01 - - - - - -24 -2004/01/01 - - - - - - - - -9 -2004/01/01 - - - - - - - - - -9 -2004/01/01 - - - - - - - - - - -ph1 - - - -9 - - - - - - -6 -wp6.1 - - - - - -9 - - - - - - - -9 - - - - - - - - - -ph1 - - - -15 - - - - - - -9 - - - - - - -15 - - - - - - -6 -wp7 -wp8 - - - - - - - - -6 -wp7 -wp8 - - - - - - - - -24 -2004/01/01 - - - - - - - From lac at codespeak.net Sun Oct 12 18:20:52 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 18:20:52 +0200 (MEST) Subject: [pypy-svn] rev 1788 - pypy/trunk/doc/funding Message-ID: <20031012162052.485B35A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 18:20:51 2003 New Revision: 1788 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Added Jacek and the Candidate Country outreach. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 18:20:51 2003 @@ -322,6 +322,22 @@ PBF. Chritian is the developer of Stackless Python, which is the blueprint for how we intend to implement persistant threads. +The PBF also provides important outreach to the members of Eastern +Europe, and Candiadate Countries. Since its founding, it has had +a board member responsible for precisely that. + +- + I've been a PBF board member from its founding, May 2002. I am + responsible for the Eastern Europe liasons. I am an intermediary of + sorts between the PBF and the businesses located in the candidate + countries of Eastern Europe. The PBF is an important link between + businesses in the EU and the candidate countries. + + Jacek Artymiak FIXME... + +Extra care will be taken to see that our results will be properly +disemminated to our PBF members in the Candiadate Countries. + Ability to deliver ++++++++++++++++++ From lac at codespeak.net Sun Oct 12 18:42:27 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 18:42:27 +0200 (MEST) Subject: [pypy-svn] rev 1789 - pypy/trunk/doc/funding Message-ID: <20031012164227.F24555A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 18:42:27 2003 New Revision: 1789 Modified: pypy/trunk/doc/funding/endorsements.asc Log: Take out Jacek, he belongs someplace else. Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Sun Oct 12 18:42:27 2003 @@ -31,11 +31,4 @@ -- - I've been a PBF board member from its founding, May 2002. I am - responsible for the Easter Europe liasons. I am an intermediary of - sorts between the PBF and the businesses located in the candidate - countries of Eastern Europe. The PBF is an important link between - businesses in the EU and the candidate countries. - Jacek Artymiak FIXME... From lac at codespeak.net Sun Oct 12 18:53:46 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 18:53:46 +0200 (MEST) Subject: [pypy-svn] rev 1790 - pypy/trunk/doc/funding Message-ID: <20031012165346.629505A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 18:53:45 2003 New Revision: 1790 Modified: pypy/trunk/doc/funding/B3.impact.txt pypy/trunk/doc/funding/FIXME pypy/trunk/doc/funding/real_B3s Log: check that I did the include of endorsements right, ok gang? Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 18:53:45 2003 @@ -137,7 +137,7 @@ languages do not support them. An implementation of the language with substantial improvements will -have an immediate direct effect on Eropean competitiveness. Moreover, +have an immediate direct effect on European competitiveness. Moreover, the planned improvements directly target the handheld, mobile, and embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high @@ -170,13 +170,15 @@ source momentum. One reason that open source is becoming so appealing is due to its equal suitability for projects based on diverse capital budgets. -Python is an open source, easy to learn, easy to use, programming language -that is readily accessible to a broad user base ranging from education -establishments through to large commercial enterprises. This project aims at -building upon the inherent nature of Python to ensure its longevity in the -commercial and research marketplace. This will maximise the return of the -existing and future capital investment in this technology and ensure Python -becomes one of the most cost effective technology platforms available. +Python is an open source, easy to learn, easy to use, programming +language that is readily accessible to a broad user base, estimated at +175,000 programmers world-wider, ranging from education establishments +through governement to commercial enterprises of all sizes. This +project aims at building upon the inherent strenghts of Python to +ensure its longevity in the commercial and research marketplace. This +will maximise the return of the existing and future capital investment +in this technology and ensure Python's widespread acceptance as one of +the most cost effective technology platforms available. Potential Impact on the Balance of Trade ======================================== @@ -194,13 +196,13 @@ you always have the option of fixing it yourself, or hiring somebody else to do that. But this is not the greatest of your worries. You are at constant risk of having your software provider discontinue -support for your language. This is a real threat, not a theoretical +support for your platform. This is a real threat, not a theoretical one. In 2002, Microsoft announced that it would no longer be supporting Visual Basic 6.0 after the year 2005. All Visual Basic Developers have been told to convert their code to run under Microsoft's new .NET framework. Before that, in 2001, Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun +immediately stopped supporting its Visual J++ language platform, meant +to be a direct competitor for Java, after settling a lawsuit with Sun Microsystems. No migration path was specified. Microsoft is making these decisions because they make business sense for Microsoft, regardless of the effects on European software developers. @@ -221,9 +223,9 @@ Every Java and VB user that switches to Python does not pay license fees to Sun or Microsoft and helps the European balance of Trade. -Of course, all the PBF members are predicting that an improved -Python will improve their sales, both domestic and foreign, which -can only improve the trade balance. +Of course, all the PBF members are predicting that an improved Python +will improve their sales, both domestic and foreign. The European +dominance of the PBF means that can only improve the trade balance. European Dimension =================== @@ -295,8 +297,7 @@ Now you know why we selected it. It fits on less than half a page, and lets anybody do whatever they like with the software. This does tend -to eliminate any contraversy, since there are no clauses that can be -interpreted in varying fashions. +to eliminate any controversies. Management of this intellectual property consists of sticking a note on your website, or wherever you keep your sources, and periodically running @@ -309,6 +310,13 @@ gives a paper to one of the scientific journals that keeps all copyright to itself. In either case, no management is necessary. +The current version of Python is licensed under the Python Software +License. What we intend to do is in no way in conflict with this +license. This is authoritative. Tim Peters, who is a member of the +project is also director of the Python Software Foundation, and +responsible for the Intellectual Property of the existing Python +language. + Dissemination ++++++++++++++ @@ -430,63 +438,56 @@ the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. -For comparison, there are something like 12 million programmers -world-wide and roughly 50% of those use Visual Basic (according to -International Data Corp). In March 2002, Borland said Java had about -1.5 million developers. - -That's a lot of Python users. Writing the language which they all use -will have an enormous impact. - -Beyond there are the users of other languages. -How do we go about getting them to use PyPy? +175,000. That's a lot of Python users. Writing the language which +they all use will have an enormous impact. Since the PyPy development +team has been in constant contact with the Python community, and its +world-wide leadership, there is no friction or political resistence to +PyPy. The individual members of the consortium are among the most +well-known and well-respected members of the Python community. We +have taken special care to include prominent stakeholders in the +existing language from the very beginning, and have constantly invited +members of the community to a series of development Sprints whereby we +produced a prototype which served as a proof-of-concept. We have also +budgetted for extensive communication and dissemination with this +community. Thus when we deliver a working product, they will be ready +to adopt it. + +Beyond this, there are the users of other languages. There are +something like 12 million programmers world-wide and roughly 50% of +those use Visual Basic (according to International Data Corp). In +March 2002, Borland said Java had about 1.5 million developers. How +do we go about getting them to use PyPy? First of all, we must give them something that they find useful, and -useful enough to switch. - - The current State-of-the-Art, both in - Python and in Computer Languages in general does not best - serve the new needs of the creators of embedded, networked and - distributed software sectors. They need a more flexible - language which is easier to reduce to its 'bare-bones' for - embedding, and which can dynamically reconfigure itself and - optimise execution speed at the interpreter level. - Consequently, the PyPy project is a collaboration between - academic researchers and SME software and service - providers. The former have the skill and vision to produce a - new run-time language architecture for the twenty-first - century and the latter wish to deploy PyPy in their innovative - new business ventures. The results of the PyPy project are - also expected to be taken-up by established industrial users. - We have expressions of interest from Bang and Olufsen, the - Danish manufacturer of high-end stereo equipment, Vodaphone - the mobile industrialist, Siemens, the German conglomorate, - and Axis the Swedish-based multinational market leader in - in-house developed chip technology for network video and print - servers. - - The project will go through three phases. In the first phase, - we will build a complete State-of-the-Art PyPy Interpreter. By - this we mean not only that PyPy will be perfectly compliant - with the language behavior of the existing Python language, - but also that it will be a State-Of-the-Art Very High Level - Object-Oriented Language. At this point the language is - expected to be very flexible, but also very slow. - - In the second phase, we will develop a high-performance PyPy - that addresses our modern needs. This PyPy will transcend the - State-of-the-Art -- it will be an innovative language best - suited for mobile, networked, and distributed - computing. Moreover, this will fix a longstanding complaint of - the estimated 175,000 Python programmers worldwide. Python - programs are faster to *develop* than programs in C, C++ or - Java, its main competition. But they *run* much slower. This - need not be. - - In a final third phase, we will validate the previous results by - implementing several applications using the high-performance PyPy - interpreter. - +useful enough to switch. While Python users might be satisfied at +getting a faster language, the users of other languages, who will need +to make a greater effort in switching need a greater reason to switch. +Fortunately, this is the technical goal of the project. + +The current State-of-the-Art, both in Python and in Computer Languages +in general does not best serve the new needs of the creators of +embedded, networked and distributed software sectors. They need a +more flexible language which is easier to reduce to its 'bare-bones' +for embedding, and which can dynamically reconfigure itself and +optimise execution speed at the interpreter level. Consequently, the +PyPy project is a collaboration between academic researchers and SME +software and service providers. The former have the skill and vision +to produce a new run-time language architecture for the twenty-first +century and the latter wish to deploy PyPy in their innovative new +business ventures. + +Here is a selection of endorsements of the project from stakeholders, +members of the Python Business Forum. + +.. include:: endorsements.asc + +The results of the PyPy project are also expected to be taken-up by +established industrial users. We have expressions of interest from +*Bang and Olufsen*, the Danish manufacturer of high-end stereo +equipment, *Vodaphone* and *Ericsson* the mobile industrialists, +*Siemens*, the German conglomorate, and *Axis* the Swedish-based +multinational market leader in in-house developed chip technology for +network video and print servers. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 18:53:45 2003 @@ -135,20 +135,20 @@ Remove garbage Fix fixmes. Some reasonably tough additions. Evaluate for relevance. -NOT STARTED +READY FOR REVIEW: Laura B3.1_standards Remove garbage -Fix fixmes -NOT STARTED +Fix fixmes -- +READY FOR REVIEW: part of B3 B3.2.3_european_dimension Needs total rewrite. -NOT STARTED +READY FOR REVIEW:Part of B3 B3.2.strategic_impact Needs polish -NOT STARTED +READY FOR REVIEW:Part of B3 B4.0_resources Should be empty. Stuff goes in subchapters. @@ -187,7 +187,8 @@ Make diagrams. Fix fixmes. Review. -NOT STARTED +READY FOR REVIEW:Bea + B6.0_detailed_implementation REVIEWED: hpk @@ -254,7 +255,7 @@ Needs work effort. NOT STARTED -B6.7.wp13_integration_config +B6.7.wp y13_integration_config ok for now DONE Modified: pypy/trunk/doc/funding/real_B3s ============================================================================== --- pypy/trunk/doc/funding/real_B3s (original) +++ pypy/trunk/doc/funding/real_B3s Sun Oct 12 18:53:45 2003 @@ -498,18 +498,7 @@ results. Diagrams and schematics will be provided to illustrate fundamental concepts, as appropriate to the audience and the subject matter. -The person in charge of WP 14 will be Alex Martelli, a member of both the core -Python developers and of the Python Business Forum, author of the best-selling -book "Python in a Nutshell", co-editor of the collectively authored "Python -Cookbook", popular for his articles on both printed and online venues, and -technical editor and/or reviewer of most of the Python books published over the -last couple of years. Dr. Martelli has a background of leading multi-cultural -software development teams and providing presentations and reports in various -formats to audiences at all levels of technical expertise. His team will include -members with a diversity of languages and backgrounds, which will prove crucial -in the popularization phase, in particular, which may require authoring, -translation, and presentation in the many different languages of the European -Union. + XXX TODO: From lac at codespeak.net Sun Oct 12 19:01:46 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 19:01:46 +0200 (MEST) Subject: [pypy-svn] rev 1791 - pypy/trunk/doc/funding Message-ID: <20031012170146.EA3DE5A2EF@thoth.codespeak.net> Author: lac Date: Sun Oct 12 19:01:46 2003 New Revision: 1791 Modified: pypy/trunk/doc/funding/FIXME Log: announce to the world that i am not a bum. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 19:01:46 2003 @@ -114,8 +114,8 @@ endorsements.asc add more resolve FIXME about orgs/titles -where to use it? -NOT STARTED +where to use it? in B3.5 +STARTED LAURA B1.0_objectives Done? Check. @@ -123,7 +123,7 @@ B1._obj_from_badB2 Usable anywhere? Make decision. -NOT STARTED +DISCARD IT, I HAVE ALL I NEED, LAURA B2.0.0_new_relevance 1 section to write @@ -173,15 +173,16 @@ B4.5_resources Needs writing. -NOT STARTED +READY FOR REVIEW Laura B4.6_finance Needs writing. -NOT STARTED + B4.7_effort_form Needs producing. To be done after everything else. NOT STARTED +READY FOR REVIEW, and I want Alastair in on it Laura B5.0_manage_bea Make diagrams. From hpk at codespeak.net Sun Oct 12 19:02:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 19:02:50 +0200 (MEST) Subject: [pypy-svn] rev 1792 - pypy/trunk/doc/funding Message-ID: <20031012170250.9F41C5A2EF@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 19:02:49 2003 New Revision: 1792 Modified: pypy/trunk/doc/funding/endorsements.asc Log: put company name to martijn faassen Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Sun Oct 12 19:02:49 2003 @@ -19,7 +19,7 @@ because it promises pragmatic benefits (performance is my personal #1, but there is a lot of other potential). - Martijn Faassen FIXME... + Martijn Faassen, Infrae Netherlands - From jacob at codespeak.net Sun Oct 12 19:16:44 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 19:16:44 +0200 (MEST) Subject: [pypy-svn] rev 1793 - pypy/trunk/doc/funding Message-ID: <20031012171644.455B55A2EF@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 19:16:43 2003 New Revision: 1793 Modified: pypy/trunk/doc/funding/FIXME pypy/trunk/doc/funding/project_planning.xml Log: New FIXME. Modified work allocation. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 19:16:43 2003 @@ -41,18 +41,24 @@ B4.resources Add organisations +Are we lacking any CVs? Find out. FIXME's Add formatting to people Review +4.7 READY FOR REVIEW, and I want Alastair in on it Laura B5.0_manage_bea 2 diagrams to be added FIXMEs Review +READY FOR REVIEW:Bea B6.0_detailed_implementation Remove garbage Review +REVIEWED: hpk +READY FOR REVIEW: FIXME_BEA or FIXME_JACOB please review the section "Risks" +NOT STARTED: FIXME_ALASTAIR fill in paragraph about WP10 B6.4_gantt Make it show on the webite. @@ -63,218 +69,45 @@ B6.6_deliverables_list To be done. +Review all the deliverables. +Add deliverable numbers to all the WPs B6.7.wp01_management B6.7.wp02_maintenance -B6.7.wp03_synchronisation -B6.7.wp04_core -B6.7.wp05_translation -B6.7.wp06_core_optimisations -B6.7.wp07_translator_optimisations -B6.7.wp08_dynamic_optimisation -B6.7.wp09_search_and_logic -Write Milestones and Expected Result - -B6.7.wp10_aspects_and_contracts -B6.7.wp11_embed_in_hardware -B6.7.wp12_validations -B6.7.wp13_integration_config -B6.7.wp14_documentation -B7.0_other_issues - - - - - - -B0.0_preamble -Remove garbage -fix fixmes -NOT STARTED - -B0.1_summary -Check Full Title, do we want this way -Finish, polish Strategic Objectives - -Retouch Alistair's Abstract (see pypy-funding comments) -it is actually in alistair_abstract.asc ! - - maybe mention sprints in the abstract? agile methodologies? - - > The project will achieve its goals principally by building on the - > strengths of the current open source developer community. - - i am probably too sensitive here but this doesn't seem to imply - that we are *part* of the open-source developer community. Many - companies have tried to "exploit" the open-source dev-community. - we don't want that. we want to contribute, connect and integrate. - -Review -NOT STARTED - -endorsements.asc -add more -resolve FIXME about orgs/titles -where to use it? in B3.5 -STARTED LAURA - -B1.0_objectives -Done? Check. -NOT STARTED - -B1._obj_from_badB2 -Usable anywhere? Make decision. -DISCARD IT, I HAVE ALL I NEED, LAURA - -B2.0.0_new_relevance -1 section to write -Fix fixmes -Modify text? Make decision. -READY FOR REVIEW: holger - -B3.0_impact -Remove garbage -Fix fixmes. Some reasonably tough additions. -Evaluate for relevance. -READY FOR REVIEW: Laura - -B3.1_standards -Remove garbage -Fix fixmes -- -READY FOR REVIEW: part of B3 - -B3.2.3_european_dimension -Needs total rewrite. -READY FOR REVIEW:Part of B3 - -B3.2.strategic_impact -Needs polish -READY FOR REVIEW:Part of B3 - -B4.0_resources -Should be empty. Stuff goes in subchapters. -NOT STARTED - -B4.1_subcontracting -Needs writing. -NOT STARTED - -B4.2_other_countries -Needs to say that no other countries will be involved. -NOT STARTED - -B4.3_participants -Needs organisation descriptions. Are we lacking any CVs? Find out. -NOT STARTED - -B4.4_quality_SMEs -Needs review. -Fix fixmes -NOT STARTED - -B4.5_resources -Needs writing. -READY FOR REVIEW Laura - -B4.6_finance -Needs writing. - - -B4.7_effort_form -Needs producing. To be done after everything else. -NOT STARTED -READY FOR REVIEW, and I want Alastair in on it Laura - -B5.0_manage_bea -Make diagrams. -Fix fixmes. -Review. -READY FOR REVIEW:Bea - - -B6.0_detailed_implementation -REVIEWED: hpk -READY FOR REVIEW: FIXME_BEA or FIXME_JACOB please review the section "Risks" -NOT STARTED: FIXME_ALASTAIR fill in paragraph about WP10 - -B6.4_gantt -Needs checking. -NOT STARTED - -B6.5_workpackage_list -Needs person months. Needs new heading for "temp" column. -NOT STARTED - -B6.6_deliverables_list -Needs writing/generating -NOT STARTED - -B6.7.wp01_management -Needs splitting of work effort. -NOT STARTED - -B6.7.wp02_maintenance -OK -DONE B6.7.wp03_synchronisation -OK -DONE B6.7.wp04_core -Needs work effort. -NOT STARTED B6.7.wp05_translation -Needs work effort. -NOT STARTED B6.7.wp06_core_optimisations -ok for now -DONE B6.7.wp07_translator_optimisations -ok for now -DONE -B6.7.wp08_dynamic_optimization -ok for now -DONE +B6.7.wp08_dynamic_optimisation B6.7.wp09_search_and_logic -ok for now -DONE +Write Milestones and Expected Result B6.7.wp10_aspects_and_contracts -Needs work effort. -NOT STARTED +Write Milestones and Expected Result B6.7.wp11_embed_in_hardware -Needs work effort. -NOT STARTED +FIXME talk about ChangeMaker and Axis here ? +Write Milestones and Expected Result B6.7.wp12_validations -Needs work effort. -NOT STARTED B6.7.wp y13_integration_config -ok for now -DONE B6.7.wp14_documentation -Needs editing. -NOT STARTED - -B6.7.wp* -Needs synchronisation with project_planning.xml -Note: no longer edit the wp file headers. -Instead, run info_to_wps.py after changing the XML. -DONE chris +Description of work needs a rewrite. B7.0_other_issues -Needs writing. -CORRECTED jacob +Review project_planning.xml -Needs general agreement before we copy info to B6.7* files. -Note: This can be repeated as often as neded, now. -CORRECTED chris +Adjust times + Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Sun Oct 12 19:16:43 2003 @@ -24,14 +24,14 @@ 24 2004/01/01 - + 24 -2004/01/01 - +2005/01/01 + @@ -44,7 +44,7 @@ - + @@ -82,14 +82,14 @@ 9 - + 9 - + @@ -127,7 +127,7 @@ wp7 wp8 - + From jacob at codespeak.net Sun Oct 12 19:31:36 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 19:31:36 +0200 (MEST) Subject: [pypy-svn] rev 1794 - pypy/trunk/doc/funding Message-ID: <20031012173136.16AA65AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 19:31:36 2003 New Revision: 1794 Modified: pypy/trunk/doc/funding/budget_summary.html pypy/trunk/doc/funding/project_gantt.png pypy/trunk/doc/funding/project_planning.xml Log: Fixed gant chart problem. Modified: pypy/trunk/doc/funding/budget_summary.html ============================================================================== --- pypy/trunk/doc/funding/budget_summary.html (original) +++ pypy/trunk/doc/funding/budget_summary.html Sun Oct 12 19:31:36 2003 @@ -19,8 +19,8 @@ pbfhacker_pbf_christian_tismer24 pbfhacker_pbf_alex_martelli12 pbfhacker_pbf_218 -pbfhacker_pbf_holger_krekel16 -pbfhacker_pbf_124 +pbfhacker_pbf_holger_krekel24 +pbfhacker_pbf_116 TOTALPBF94470.0 kEUR29.38 % mpihacker_mpi_224 mpihacker_mpi_124 Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Sun Oct 12 19:31:36 2003 @@ -29,7 +29,7 @@ -24 +12 2005/01/01 From lac at codespeak.net Sun Oct 12 19:49:52 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 19:49:52 +0200 (MEST) Subject: [pypy-svn] rev 1795 - pypy/trunk/doc/funding Message-ID: <20031012174952.1F4825AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 19:49:51 2003 New Revision: 1795 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: Put Guido's endorsement in. Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 19:49:51 2003 @@ -74,20 +74,38 @@ programming language. PyPy's ObjectSpaces flexibility will be crucial in distinguishing "accidental" from "designed-in" characteristics. -(FIXME: I sent Guido mail asking for something quotable. We will see -if he replies. -- He did. He will say whatever we like, more or less. -What should we ask him to say?) +Here is the relevant mail from Guido van Rossum + +FIXME: what is ReST for indent this and make it stand out some way? + +Having participated in one PyPy Sprint, I am very happy with this +project, and hope to see it going forward. The PyPy team includes +some of the best minds in the Python community. + +Unlike Perl or Tcl, Python is not a "one-implementation" language, and +consequently the formal language specification should have priority +over the behavior of a particular implementation. The PyPy project +will reinforce this idea, and can be useful in sorting out ambiguities +in the specification. It is even possible that PyPy will eventually +serve as an "executable specification" for the language, and the +behavior of one of PyPy's object spaces will be deemed the correct +one. + +--Guido van Rossum (home page: http://www.python.org/~guido/) + In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design document providing information to the Python community, or describing -a new feature for Python. There are two kinds of PEPs. A Standards -Track PEP describes a new feature or implementation for Python. An -Informational PEP describes a Python design issue, or provides general -guidelines or information to the Python community, but does not -propose a new feature. If we proposed to make PyPy the reference -standard of the Python language, we would, obviously, have to submit a -Standards Track PEP. +a new feature for Python. The PEP process is designed for Community +involvement and participation. + +There are two kinds of PEPs. A Standards Track PEP describes a new +feature or implementation for Python. An Informational PEP describes a +Python design issue, or provides general guidelines or information to +the Python community, but does not propose a new feature. If we +proposed to make PyPy the reference standard of the Python language, +we would, obviously, have to submit a Standards Track PEP. The complete details of how to write a PEP are themselves an Informational PEP -- PEP #1 in fact. A copy of PEP #1 is provided @@ -95,22 +113,15 @@ FIXME include http://www.python.org/peps/pep-0001.html -PEPs are reviewed by Guido van Rossum, the language author, and his -chosen consultants, who may accept or reject a PEP or send it back to -the author(s) for revision. - -If Guido van Rossum accepts the PEP, then once the reference -implementation is complete and accepted (again by Guido van Rossum), -the status will be changed to 'Accepted and Final' In our case, we -wouldn't even write the PEP without having a complete reference -implementation, since what we would be proposing is to make PyPy and -not CPython the complete reference implementation of the language. +After circulating through the community, PEPs are reviewed by Guido +van Rossum, the language author, and his chosen consultants, who may +accept or reject a PEP or send it back to the author(s) for revision. Thus the expression of interest from Guido van Rossum is of extreme significance. It is very likely, if all the goals described in the -project PyPy will become the standard reference implementation of the -Python language. In other words, our problems are technical, and not -political. The political will is already there to make PyPy the -reference langauge. We merely need to create it. +project are completed, that PyPy will become the standard reference +implementation of the Python language. In other words, our problems +are technical, and not political. The political will is already there +to make PyPy the reference langauge. We merely need to create it. Strategic impact +++++++++++++++++ From anna at codespeak.net Sun Oct 12 20:03:19 2003 From: anna at codespeak.net (anna at codespeak.net) Date: Sun, 12 Oct 2003 20:03:19 +0200 (MEST) Subject: [pypy-svn] rev 1796 - pypy/trunk/doc/funding Message-ID: <20031012180319.2BAFB5AD89@thoth.codespeak.net> Author: anna Date: Sun Oct 12 20:03:18 2003 New Revision: 1796 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: I've done some proofreading and editing. Some minor proofing changes (commas, etc), and one larger change moving most of a paragraph on our Object Spaces down to the Beyond State of the Art, where it fit better. Anna Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sun Oct 12 20:03:18 2003 @@ -8,7 +8,7 @@ Current language implementations are static and hard to modify by users. Even the implementations of open-source dynamic languages have non-flexible designs crafted by a small group of developers. While -designing a good programming language is no easy task often +designing a good programming language is no easy task, often application developers seek more support and configurability of their language. This is especially the case for the rising number of specialized runtime environments where small memory footprints, @@ -32,17 +32,16 @@ In the long run, user pressure tends to shape interpreters towards performance at the expense of other aspects (simplicity, flexibility), -possibly culminating with the introduction of a native JIT, adding a -significant amount of code and complexity and further impairing the -flexibility. [S03]_ +possibly culminating in the introduction of a native 'Just-In-Time' (JIT) +compiler, adding a significant amount of code and complexity and further +impairing the flexibility. [S03]_ Consequently, application developers are often left with bad choices -not only for productivity versus performance, but they have to work -around the hard-wired characteristics built into the -languages. Instead they would like to adapt and configure a VHLL to -suit their needs while at the same time developing on top of a custom -but standardised language offering both productivity and performance. - +not only regarding productivity versus performance, but they have to work +around hard-wired characteristics built into the languages. Instead they +would like to adapt and configure a VHLL to suit their needs while at the same +time developing on top of a custom but standardized language offering both +productivity and performance. Quantified specific objective ----------------------------------- @@ -55,12 +54,12 @@ bytecode interpreter. A number of features, most of which are hard to implement as application-level libraries, can become part of the language in a manageable and user-configurable way if they are -implemented modularily as Object Spaces. For example: +implemented modularly as Object Spaces. For example: * choice of memory and threading model * choice of speed vs. memory trade-offs * distributed/parallel execution (SMP or Networked) -* orthogonal persistency +* orthogonal persistence * pervasive security support * logic and aspect-oriented programming @@ -68,88 +67,79 @@ VHLL language (Python itself) and recover performance with a separate translation process producing specialized efficient low-level code. The translation is not one-shot: it can be repeated and tailored to weave -different aspects into releases with different trade-offs and features, +different aspects into releases with different trade-offs and features, giving the user of the language a real choice. - -The PyPy project plans to deliver a compliant language implementation -passing all relevant (at least 90%) unit-tests of the current reference -C-implementation. Moreover, we will be able to add techniques such as -Just-In-Time compilation without making the interpreter more complex. -Thus we will get speed increases of 2-10 times over the reference -C-implementation. We expect algorithmic code to run at least at 50% of -the speed of pure, optimized C code. +The PyPy project plans to deliver a compliant language implementation +passing all unit-tests of the current reference C-implementation that are +relevant to the new one. At least 90% of existing unit tests will be directly +applicable. Moreover, we will be able to add techniques such as JIT compilation +without making the interpreter more complex. Thus we will get speed increases of +2-10 times over the reference C-implementation. We expect algorithmic code to +run at least at 50% of the speed of pure, optimized C code. Current State of The Art ------------------------------ Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have -not been tried on something as large as Python, as approach it is hard -to relate to for programmers accustomed to more conventional OO -programming and requires sophisticated partial evaluation to remove the -monadic overhead. - -Our Object Spaces should allow customization with OO techniques, they -will encapsulate the object operation semantics, creation and global -state of all objects. Monad transformers can be used also to -modularize continuation passing, exceptions and other control flow -aspects. We expect to encapsulate those in an interpreter loop to be -also translated or to implement them as aspects weaved in by the -translation process, for example producing CPS code. +not been tried on something as large as Python, however, as the approach is hard +to relate to for programmers accustomed to more conventional Object-Oriented +(OO) programming and requires sophisticated partial evaluation to remove the +monadic overhead. Monad transformers can also be used to modularize +continuation passing, exceptions and other control flow aspects. -In its basics the approach of writing a language interpreter in the +In its basics, the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running low-level code version trough a translation process has already been taken, e.g. for the Scheme (Scheme 48) [K97]_ and the Smalltalk (Squeak) [IKM97]_ languages. Obtaining in this way an interpreter comparable with current C Python implementation is -within current state of the art, but successively we plan to exploit +within current state of the art, but we plan to exploit the gained flexibility much further, separating concerns between the translator, the code and Object Spaces encapsulating the core language and its semantics and further pluggable modules for both. JIT compilers have been reasonably well studied; an account of their -history is given in [A03]_ . But actually writing a JIT for +history is given in [A03]_ . But actually writing a JIT compiler for a given language is generally a major task [WAU99]_ . -Different techniques to ease this path have been recently explored; -let us cite: +Different techniques to ease this path have been recently explored: -* to implement a dynamic language in a flexible way, it can be written +* To implement a dynamic language in a flexible way, it can be written on top of another one, e.g. as a dynamic translator that produces bytecodes for an existing virtual machine. If the virtual machine is already equipped with state-of-the-art JIT compilation, it is possible to leverage its benefits to the new language. This path is - not only much shorter than designing a complete custom JIT, but it + not only much shorter than designing a complete custom JIT compiler, but it is also easier to maintain and evolve. This idea is explored for the Self virtual machine in [WAU99]_ . As pointed out in that paper, some source language features may not match any of the target virtual machine features. When this issue arises, we are - left with the hard problem of refactoring an efficient JIT-based - virtual machine. + left with the hard problem of refactoring an efficient JIT compiler-based + virtual machine. -* a completely different approach: making it easier to derive a JIT - from an existing C interpreter. DynamoRIO instrumentates the +* Using a completely different approach, to make it easier to derive a JIT + compiler from an existing C interpreter, DynamoRIO instruments the execution of compiled programs and optimizes them dynamically. It has been extended with specific support for interpreters. With minimal amounts of changes in the source of an interpreter, it can significantly reduce the processor-time interpretative overhead [S03]_ . While this offers a highly competitive gain/effort - ratio, performance does not reach the levels of a hand-crafted JIT. + ratio, performance does not reach the levels of a hand-crafted JIT compiler. The current Python C implementation (CPython) is a straight-forward bytecode interpreter. Psyco [R03]_ is an extension to it implementing a highly -experimental [APJ03]_ specializing JIT compiler based on abstract interpretation. -In its current incarnation it is also a delicate hand-crafted piece -of code, which is hard to maintain and not flexible. But this should not +experimental [APJ03]_ specializing JIT compiler based on abstract +interpretation. In its current incarnation it is also a delicate hand-crafted +piece of code, which is hard to maintain and not flexible. But this should not inherently be the case. Moreover it would likely benefit from integration -with type-feedback techniques as developed for Self [HCU91]_ [HU94]_. +with type-feedback techniques such as those developed for Self [HCU91]_ [HU94]_. Beyond State of The Art ----------------------------- -Our architecture is based on Object Spaces, and translation. The +Our architecture is based on Object Spaces and translation. The interpreter's main dispatch loop handles control flow and supporting data structures (frame stack, bytecode objects...); each individual operation on objects is dispatched to the object space. @@ -166,9 +156,17 @@ Spaces, other modules also translated, or the pluggable behavior of the translation itself. +Object Spaces, in contrast to monadic interpreters, will allow customization +with OO techniques, as they encapsulate the object operation semantics, creation +and global state of all objects. As mentioned above, monad transformers can be +used to modularize continuation passing, exceptions and other control flow +aspects. We expect to encapsulate those in an interpreter loop to be also +translated or to implement them as aspects of the translation process, +for example, producing continuation-passing code. + Many of these aspects are really cross-cutting concerns in the -original AOP sense. In general our approach relates to the seminal -AOP ideas in [KLM97]_, although they have not been +original Aspect Oriented Programming (AOP) sense. In general our approach +relates to the seminal AOP ideas in [KLM97]_, although they have not been used on interpreters for large practical languages. The subset of Python in which we express the core interpreter and Object Spaces is the component language in the terminology of the paper, while the @@ -194,13 +192,13 @@ Another key innovative aspect of our project is to generate the JIT compiler instead of writing it manually. Indeed, although Psyco was hand-written, large parts have a one-to-one correspondence to whole -sections of the CPython interpreter. This is uncommon for JITs, but +sections of the CPython interpreter. This is uncommon for JIT compilers, but Psyco's good results give ample proof-of-concept. (This property can be -explicitely related to the DynamoRIO project cited above, which -instrumentates the interpreter itself.) The one-to-one correspondence +explicitly related to the DynamoRIO project cited above, which +instruments the interpreter itself.) The one-to-one correspondence between parts of CPython and Psyco is as follows: to each expression in the source of CPython corresponds a more complex expression in Psyco, -which does instrumentation and optimisations. Our plan is thus to +which does instrumentation and optimizations. Our plan is thus to generate automatically as much of the JIT as possible, by changing the translator to generate instrumenting/optimizing C instructions instead of (or in addition to) the normal C instructions that would be the @@ -214,9 +212,9 @@ References: -.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. - http://www.ai.mit.edu/~gregs/dynamorio.html -.. file = ivme03.pdf +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native +Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html +.. file = ivme03.pdf .. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers and Modular Interpreters". 22nd ACM Symposium on Principles of Programming @@ -224,25 +222,25 @@ http://java.sun.com/people/sl/papers/popl95.ps.gz .. file = popl95.ps.gz -.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. - http://haskell.org/frp/dsl.ps +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. +1998. http://haskell.org/frp/dsl.ps .. file = dsl.ps.gz -.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. - http://citeseer.nj.nec.com/kelsey97prescheme.html +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". +1997. http://citeseer.nj.nec.com/kelsey97prescheme.html .. file = kelsey97prescheme.pdf -.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. - ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html -.. file = OOPSLA.Squeak.htm - -.. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. -.. file = jit-history.pdf +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. +"Back to the future: The story of Squeak, A practical Smalltalk written in +itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. +ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html.. file = +OOPSLA.Squeak.htm.. [A03] John Aycock, "A Brief History of Just-In-Time", ACM +Computing Surveys 35, 2 (June 2003), pp. 97-113... file = jit-history.pdf .. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, - "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop - on Simplicity, Performance and Portability in Virtual Machine Design, - OOPSLA '99, Denver, CO, Nov 2, 1999. + "Towards a Universal Implementation Substrate for Object-Oriented Languages", +OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual +Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf .. file = oopsla-vm-wkshp.pdf @@ -263,13 +261,14 @@ .. file = hlzle91optimizing.ps.gz .. [HU94] Urs H?lzle, David Ungar, - "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", - PLDI '94 and OOPSLA '94 - http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf -.. file = reconciling-responsiveness-with-performance.pdf - + "Reconciling Responsiveness with Performance in Pure Object-Oriented +Languages", PLDI '94 and OOPSLA '94 + +http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with +-performance.pdf.. file = reconciling-responsiveness-with-performance.pdf .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 - http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf -.. file = kiczales97aspectoriented.pdf + +http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web +.pdf.. file = kiczales97aspectoriented.pdf \ No newline at end of file From lac at codespeak.net Sun Oct 12 20:08:42 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 20:08:42 +0200 (MEST) Subject: [pypy-svn] rev 1797 - pypy/trunk/doc/funding Message-ID: <20031012180842.D69735AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 20:08:42 2003 New Revision: 1797 Modified: pypy/trunk/doc/funding/FIXME Log: Anna Reviewed 1 for proofreading Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 20:08:42 2003 @@ -27,7 +27,7 @@ we don't want that. we want to contribute, connect and integrate. B1.0_objectives -Review +Reviewed Anna B2.relevance_to_IST The following need writing: From jacob at codespeak.net Sun Oct 12 20:09:54 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:09:54 +0200 (MEST) Subject: [pypy-svn] rev 1798 - pypy/trunk/doc/funding Message-ID: <20031012180954.4AE875AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:09:53 2003 New Revision: 1798 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt pypy/trunk/doc/funding/B4.resources.txt Log: Editing. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sun Oct 12 20:09:53 2003 @@ -22,63 +22,65 @@ Python as a language "for everybody" ++++++++++++++++++++++++++++++++++++ -The european industry as well as many developers are not interested in yet another -new language. Instead our project will produce an extremely flexible and performant -development platform around the Python programming language. Much anecdotal, -and some empirical, evidence suggests that Python is one of the easiest programming -languages to learn and is one of the languages in which one can code up a given -algorithm the fastest. For these reasons, it is **particularly popular -among those people whose main competence lies beyond computer science -and for whom programming is a secondary activity**, that is to say almost -everyone in the information industry. Using Python itself to develop an -innovative Python implementation will allow many people to understand the platform -and reuse it in their context. Understanding, teaching and adapting our -Python implementation will be much easier than almost any other language -implementation. +The european industry as well as many developers are not interested in +yet another new language. Instead our project will produce an +extremely flexible and performant development platform around the +Python programming language. Much anecdotal, and some empirical, +evidence suggests that Python is one of the easiest programming +languages to learn and is one of the languages in which one can code +up a given algorithm the fastest. For these reasons, it is +**particularly popular among those people whose main competence lies +beyond computer science and for whom programming is a secondary +activity**, that is to say almost everyone in the information +industry. Using Python itself to develop an innovative Python +implementation will allow many people to understand the platform and +reuse it in their context. Understanding, teaching and adapting our +Python implementation will be much easier than almost any other +language implementation. A development platform suited for tommorow's european industry ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -The EU is interested in **software technologies that are reliable, -pervasive, interoperable and can be adapted to accommodate new -applications and services**. This is exactly the focus of our project. -With some unique approaches to building a highly performant -and productive development platform we will further innovation -and interoperability. +The EU is interested in **software technologies that are reliable, +pervasive, interoperable and can be adapted to accommodate new +applications and services**. This is exactly the focus of our project. +With some unique approaches to building a highly performant and +productive development platform we will further innovation and +interoperability. We will build an extensible Python implementation that can be adapted -and configured for almost all runtime environments. It will go far beyond -the state of the Art in computer languages, and produce a runtime system -which is much better suited for the development and deployment of networked, -embedded, and mobile devices than any existing language available today. -In doing so it will be compliant with the Python language specification -requiring no re-training for the tens of thousands of European Python -programmers. To dramatically expand the scope of an already very -productive development environment can only have a positive effect on -European competitiveness. +and configured for almost all runtime environments. It will go far +beyond the state of the Art in computer languages, and produce a +runtime system which is much better suited for the development and +deployment of networked, embedded, and mobile devices than any +existing language available today. In doing so it will be compliant +with the Python language specification requiring no re-training for +the tens of thousands of European Python programmers. To dramatically +expand the scope of an already very productive development environment +can only have a positive effect on European competitiveness. PyPy builds on the most successful language designed in europe ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -Python is the most widely used European-designed computer language. -Its development started in 1990, at CWI, Centrum voor Wiskunde en -Informatica, the National Research Institute for Mathematics and -Computer Science in the Netherlands, it will strenghten our leadership -in the area of innovative language design, and increase world-wide -awareness of this fact. With funding from the EU we can bring some -key python developers to europe. - -We believe that PyPy presents a **unique opportunity to bring -considerable market- und mind share with respect to development -tools and environments back to europe**. The many individuals and -companies involved with the project are deeply entagled with the -opensource community and businesses. Python and PyPy in particular -provide a viable alternative to American closed source language -monopolies, while increasing innovation and competitiveness in European -businesses and industry and thus contributing to the greater well-being -of all European citizens. +Python is the most widely used European-designed computer language. +Its development started in 1990, at CWI, Centrum voor Wiskunde en +Informatica, the National Research Institute for Mathematics and +Computer Science in the Netherlands, it will strenghten our leadership +in the area of innovative language design, and increase world-wide +awareness of this fact. With funding from the EU we can bring some key +python developers to europe. + +We believe that PyPy presents a **unique opportunity to bring +considerable market- und mind share with respect to development tools +and environments back to europe**. The many individuals and companies +involved with the project are deeply entagled with the opensource +community and businesses. Python and PyPy in particular provide a +viable alternative to American closed source language monopolies, +while increasing innovation and competitiveness in European businesses +and industry and thus contributing to the greater well-being of all +European citizens. Working with the strong opensource community to overcome the european weakness with development platforms obviously builds on the @@ -156,17 +158,6 @@ among its developers, and beneficiaries of a focussed effort in knowledge dissemination. - -Links and Complimentary with Other Programmes -+++++++++++++++++++++++++++++++++++++++++++++++++ -FIXME_ARMIN FIXME_NICO FIXME_ALASTAIR FIXME_BEA -Talk about your projects. - -Contribution to Community Social Objectives -+++++++++++++++++++++++++++++++++++++++++++ - -FIXME_LAURA ask Michel - Contributiuon to EC Policies ++++++++++++++++++++++++++++ Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:09:53 2003 @@ -18,7 +18,17 @@ Country: Sweden Contact: Jacob Hall?n - Skills, Commitment, Resources: + AB Strakt is a software product developing company located in + G?teborg, Sweden. The main product of the company is CAPS, a + platform for constructing collaborative workflow systems. On top of + this platform the company has built a number of applications; + helpdesk, project management, customer relations management and + procurement. All products are built in Python. Strakt is involved in + the development of several OpenSource projects, which in one way or + another play a role in the company's software development. The main + development platform is Linux. The company has 12 full time + employees, of which one resides in Italy and one in the Netherlands, + and 6 part time employees. The company was formed in January 2001. **University of Southampton** @@ -36,7 +46,16 @@ Country: Europe Contact: Holger Krekel - Skills, Commitment, Resources: + The PBF is an industry organisation for companies where Python is a + central part of the business model. The PBF is registered as a + non-profit organisation under Swedish law. It has approximately 50 + SME members. The Forum has a board, which focuses on administration + and strategic issues, while the main activities occur in Special + Interest Groups (SIGs). Each SIG controls its own activities but + reports to the board in financial matters. + + The PBF will form a PyPy SIG with **Holger Krekel** as chairman to + handle its involvement in the project. **Logilab** @@ -48,151 +67,157 @@ applying new techniques to solve industrial clients' problems. XXXFIXME -interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, -anna ravenscroft, gunter janton, samuele pedroni -FIXME_LAURA - - Sub-contracting --------------- -I am going to run my accounting figures though the AB Strakt -bookkeeper, as part of my management duties. She is a contractor -who consults regularly to AB Strakt. Aside from that I don't -see that we will have any need for sub-contracting. Possibly to get -final stamps of approval on the books from KPMG our accounting -firm. This is the sort of thing that AB Strakt does all the time. -FIXME_LAURA -- discuss role of PBF in mitigating Samuele's and Tim's -problem? phone call to Belgium to ask this happening. +Some pure accounting and auditing tasks will be subcontracted. No core +technical functions or project management will be handed to non-partners. Other countries --------------- -FIXME LAURA +The project does not involve any countries outside the European Union. Description of the participants ---------------------------------- -Jacob Hall?n, 45, comes to his position as co-founder and CTO of AB Strakt from -being a Technical Manager and international standards expert at the LIBRIS -Department of the Royal Library. He was the LIBRIS representative in the EU -funded ONE-2 project. Before this, he was the CEO of NetGuide Scandinavia AB, -one of the first internet services companies in Sweden. Mr Hall?n has also been -a Computer Science and Programming teacher and an army officer. Throughout his -career he has been managing projects varying from 1200 participant conventions -down to 3 person development projects. He has also done electronics development -and microcontroller programming, winning two innovation awards in the process. -Mr Hall?n is chairman of the Python Business Forum. - -Armin Rigo was born in 1976 in Lausanne, Switzerland. He is a researcher at the -University of Southampton (UK). He studied Mathematics at the University of -Lausanne and obtained his Ph.D. in Logic and Set Theory at the Free University -of Brussels. He is the main author of several commercial, open source and -research programs and contributed to a number of them, most notably in the -fields of computer graphics and 3D modelling, education, and programming -languages. He recently developed in the Psyco project novel techniques for -efficient interpretation of dynamic programming languages. He is also a member -and contributor of the TUNES Project for a Free Reflective Computing System. - -Holger Krekel, born 1969 in Frankfurt a.M., began in 1985 to work as a lead -programmer producing games for Electronic Arts. He went to university, gave -courses in Prolog, C, Assembler, mathematics and assisted in numerical -computing. He got his degree "magna cum laude". He consulted for Volkswagen, -large German banks and the chairman of the EU-founded CEN/ISSS workshop who -contracted him to prototype integration of OpenSource software. He implemented -an opensource transaction service on top of TAO/CORBA and published several -articles about Free projects. In 2001 he joined the Python community, published -an interactive tool, took part in Zope3 development and some of the first coding -Sprints in Europe and became one of the initiators of the PyPy project. - -Tim Peters: Over 20 years top-tier industrial experience in programming language -implementation and high-performance computing. 1979-1988, Cray Research: -Compiler development, Group leader--common back-end optimization group. 1988- -1994, Kendall Square Research (KSR), Compiler and Library development, -Architecture and FPU design. 1994-2000, Dragon Systems: Developed core speech -recognition system for portable devices; scalable, large-scale telephone speech -recognition; and award-winning PhoneQuery Toolkit product. 2000 to present: -Zope Corporation: Development--Core technologies underlying Zope's leading -content management framework; Python core. Python: first port of Python to 64- -bit platform (KSR-1); POSIX pthreads support; algorithmic and optimization -expertise; elected Director of Python Software Foundation (PSF) since its +**Jacob Hall?n**, born 1958, comes to his position as co-founder and CTO +of AB Strakt from being a Technical Manager and international +standards expert at the LIBRIS Department of the Royal Library. He was +the LIBRIS representative in the EU funded ONE-2 project. Before this, +he was the CEO of NetGuide Scandinavia AB, one of the first internet +services companies in Sweden. Mr Hall?n has also been a Computer +Science and Programming teacher and an army officer. Throughout his +career he has been managing projects varying from 1200 participant +conventions down to 3 person development projects. He has also done +electronics development and microcontroller programming, winning two +innovation awards in the process. Mr Hall?n is chairman of the Python +Business Forum. + +**Armin Rigo** was born in 1976 in Lausanne, Switzerland. He is a +researcher at the University of Southampton (UK). He studied +Mathematics at the University of Lausanne and obtained his Ph.D. in +Logic and Set Theory at the Free University of Brussels. He is the +main author of several commercial, open source and research programs +and contributed to a number of them, most notably in the fields of +computer graphics and 3D modelling, education, and programming +languages. He recently developed in the Psyco project novel techniques +for efficient interpretation of dynamic programming languages. He is +also a member and contributor of the TUNES Project for a Free +Reflective Computing System. + +**Holger Krekel**, born 1969 in Frankfurt a.M., began in 1985 to work as a +lead programmer producing games for Electronic Arts. He went to +university, gave courses in Prolog, C, Assembler, mathematics and +assisted in numerical computing. He got his degree "magna cum +laude". He consulted for Volkswagen, large German banks and the +chairman of the EU-founded CEN/ISSS workshop who contracted him to +prototype integration of OpenSource software. He implemented an +opensource transaction service on top of TAO/CORBA and published +several articles about Free projects. In 2001 he joined the Python +community, published an interactive tool, took part in Zope3 +development and some of the first coding Sprints in Europe and became +one of the initiators of the PyPy project. + +**Tim Peters**: Over 20 years top-tier industrial experience in +programming language implementation and high-performance +computing. 1979-1988, Cray Research: Compiler development, Group +leader--common back-end optimization group. 1988- 1994, Kendall +Square Research (KSR), Compiler and Library development, Architecture +and FPU design. 1994-2000, Dragon Systems: Developed core speech +recognition system for portable devices; scalable, large-scale +telephone speech recognition; and award-winning PhoneQuery Toolkit +product. 2000 to present: Zope Corporation: Development--Core +technologies underlying Zope's leading content management framework; +Python core. Python: first port of Python to 64- bit platform (KSR-1); +POSIX pthreads support; algorithmic and optimization expertise; +elected Director of Python Software Foundation (PSF) since its inception. -Alex Martelli: Best-selling author of *Python in a Nutshell*. Co-editor of -*Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, -Python langauge developer, PBF board member. Currently works for AB Strakt, -developing the CAPS framework. Also consults for other firms on Python and O-O -design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab -(think3, Inc): innovative component architecture for web-enabling existing GUI- -oriented apps; Event Manager, interfacing, proprietary protocols. Taught -Computer Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM -Research: 3 Outstanding Technical Achievement awards, voice recognition, image -processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 -magna cum laude. - -Samuele Pedroni: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His -thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as -teaching/published research assistant at the Institute of Theor. CS of the ETHZ. -He was designer on the state-of-the-art genetic programming framework for Java -JRGP, becoming involved in Jython (the industry-strength Java re-implemetation -of Python). He is now a main developer of Jython, working on internals, -compilers and Java integration, and was author of Jython Essentials (O'Reilly, -2002). He is also involved on the ongoing design of Python. For his -contributions to Python/Jython he has been nominated member of the PSF. He -brings to the project his know-how on languages, re-implementation/design of -Python, reflection, lookup and dispatch optimization. - -Laura Creighton: Co-founder and lead investor of AB Strakt, Treasurer of the -PBF. Studied Physics (csc minor) at the University of Toronto, and later -instructed there in Physics and Computer Science, while simultaneously working -for the Canadian Armed Forces, teaching programming to non-programmers, and -assisting with research in Human Factors Engineering and Learning Techniques. -Moving to the US, she consulted for software companies and government -institutions, taught Unix, project management, and interpersonal relations, and -wrote a geophysical simulation system. She brings strong connections in -financial and government sectors, and was an Open Source advocate before the -term was coined. Her passions: programming, empowerment of average citizens, -and the Open Society. - -Beatrice D?ring studied teaching/pedagogy at the University of Karlstad in -Sweden. She was recruited into the IT-industry to work as a project manager for -large scale education projects for the company NetGuide Scandinavia, Gothenburg. -Since 1998 she has been working with education and development project -management and management of education and consultant departements, implementing -Open Source strategies and Agile development methods. Beatrice also teaches -project management, leadership and communication courses for Learning Tree -International. - -Anna Ravenscroft: Started programming with Python in 2002, presenting papers on -teaching Python, serving as track chair at EuroPython and OSCON, writing and -technical-editing books and articles. Before 2002, Instruction Administrator for -a public transport company, managing projects, teaching, developing course -material, creating websites. Earlier, Office Manager for a small training -company, creating and editing training documents and administering the firm's NT -LAN. Up to 1994, Distribution Coordinator for a large Financial Services -company, providing field communications and training for a sales force of 7500. -In the 1980's, served as Psychological Operations Specialist in the US Army, -receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. - -Christian Tismer: Born 1956 in Jena, Germany, studied Math, Physics and -Informatics at the Free University of Berlin, diploma on Adaptive Huffman -Coding. He has been working for Pharmaceutic Research companies for more than 10 -years, doing statistical evaluations, EEG and EMG recording, signal analysis, -networking, report generation and automation. He wrote his first multitasking -system in 1985 for DOS, continuous 32 channel EEG recording and visualisation on -a 286 machine. Later, he worked on Netscape plugins, document automation, Web -and database applications. Converted to Python in 1997, founded Python Starship, -became Python core developer. He translates Python books into German, is the -author of the Stackless Python extension to be merged into PyPy, and belongs to -the founders of the PyPy project. - -Tomasz Meka: Born 1976 in Poland. Currently studying computer science on the -Technical University in Berlin. He is going to write his diploma thesis on Pypy -- about implementing Scheme on top of Pypy. He has a strong background about web -programming (python, zope, perl), now is working in dai-lab on the Technical -University and is reimplementing the parser and compiler for the agent- -controling language JADL. His passions: programming, traveling, philosophy. -FIXME XXX will be augmented a little XXX +**Alex Martelli**: Best-selling author of *Python in a +Nutshell*. Co-editor of *Python Cookbook* . ActiveState 2002 +"Activators' Choice" award. PSF member, Python langauge developer, PBF +board member. Currently works for AB Strakt, developing the CAPS +framework. Also consults for other firms on Python and O-O design, +teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab +(think3, Inc): innovative component architecture for web-enabling +existing GUI- oriented apps; Event Manager, interfacing, proprietary +protocols. Taught Computer Programming and Numerical Analysis, Ferrara +University. 1981-1989, IBM Research: 3 Outstanding Technical +Achievement awards, voice recognition, image processing. "Laurea" +1980, Electronic Engineering, Bologna University, 100/100 magna cum +laude. + +**Samuele Pedroni**: Born 1974 in Switzerland. Dipl. Math. ETH Zurich +(1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 +he worked as teaching/published research assistant at the Institute of +Theor. CS of the ETHZ. He was designer on the state-of-the-art +genetic programming framework for Java JRGP, becoming involved in +Jython (the industry-strength Java re-implemetation of Python). He is +now a main developer of Jython, working on internals, compilers and +Java integration, and was author of Jython Essentials (O'Reilly, +2002). He is also involved on the ongoing design of Python. For his +contributions to Python/Jython he has been nominated member of the +PSF. He brings to the project his know-how on languages, +re-implementation/design of Python, reflection, lookup and dispatch +optimization. + +**Laura Creighton**: Co-founder and lead investor of AB Strakt, Treasurer +of the PBF. Studied Physics (csc minor) at the University of Toronto, +and later instructed there in Physics and Computer Science, while +simultaneously working for the Canadian Armed Forces, teaching +programming to non-programmers, and assisting with research in Human +Factors Engineering and Learning Techniques. Moving to the US, she +consulted for software companies and government institutions, taught +Unix, project management, and interpersonal relations, and wrote a +geophysical simulation system. She brings strong connections in +financial and government sectors, and was an Open Source advocate +before the term was coined. Her passions: programming, empowerment of +average citizens, and the Open Society. + +**Beatrice D?ring** studied teaching/pedagogy at the University of +Karlstad in Sweden. She was recruited into the IT-industry to work as +a project manager for large scale education projects for the company +NetGuide Scandinavia, Gothenburg. Since 1998 she has been working +with education and development project management and management of +education and consultant departements, implementing Open Source +strategies and Agile development methods. Beatrice also teaches +project management, leadership and communication courses for Learning +Tree International. + +**Anna Ravenscroft**: Started programming with Python in 2002, presenting +papers on teaching Python, serving as track chair at EuroPython and +OSCON, writing and technical-editing books and articles. Before 2002, +Instruction Administrator for a public transport company, managing +projects, teaching, developing course material, creating +websites. Earlier, Office Manager for a small training company, +creating and editing training documents and administering the firm's +NT LAN. Up to 1994, Distribution Coordinator for a large Financial +Services company, providing field communications and training for a +sales force of 7500. In the 1980's, served as Psychological +Operations Specialist in the US Army, receiving an Honors Degree in +Russian. Education: Liberal Arts, Univ. of MN. + +**Christian Tismer**: Born 1956 in Jena, Germany, studied Math, Physics +and Informatics at the Free University of Berlin, diploma on Adaptive +Huffman Coding. He has been working for Pharmaceutic Research +companies for more than 10 years, doing statistical evaluations, EEG +and EMG recording, signal analysis, networking, report generation and +automation. He wrote his first multitasking system in 1985 for DOS, +continuous 32 channel EEG recording and visualisation on a 286 +machine. Later, he worked on Netscape plugins, document automation, +Web and database applications. Converted to Python in 1997, founded +Python Starship, became Python core developer. He translates Python +books into German, is the author of the Stackless Python extension to +be merged into PyPy, and belongs to the founders of the PyPy project. + +**Tomasz Meka**: Born 1976 in Poland. Currently studying computer science +on the Technical University in Berlin. He is going to write his +diploma thesis on Pypy - about implementing Scheme on top of Pypy. He +has a strong background about web programming (python, zope, perl), +now is working in dai-lab on the Technical University and is +reimplementing the parser and compiler for the agent- controling +language JADL. His passions: programming, traveling, philosophy. Quality of partnership, involvement of users and SMEs ----------------------------------------------------- @@ -218,18 +243,19 @@ with Python but would be able to solve a wider range of problems with a faster version of the language. +MPI will bring Samuele Pedroni to the project. + +Samuele Pedroni is the main developer of Jython, an implementation of +Python that uses the Java Virtual Machine. He is an expert on how to +generate code for different virtual machines. He brings experience in +this field and a creative mind to the project. + University of Southampton +++++++++++++++++++++++++ is the employer of Armin Rigo, who is the lead architect of the whole project as well as the author of Psyco, the blueprint for how to do optimisation in Pypy. -FIXME: Where does Samuele go? -+++++++++++++++++++++++++++++ -Samuele Pedroni is the main developer of Jython, an implementation of -Python that uses the Java Virtual Machine. He is an expert on how to -generate code for different virtual machines. He brings experience in -this field and a creative mind to the project. Strakt ++++++ @@ -242,39 +268,11 @@ from being an outstanding programmer, Tim has intimate knowledge about all the details of the Python language definition. As Director of the Python Software foundation, Tim Peters is also responsible for the -Intellectual Property of the existing Python language. Popular with -the Python community at large, Tim was deemed to be 'too excellent' -and received the humourous but immensely prestigeous title 'Timbot', -becoming the first of the 'Three Bots' of comp.lang.python. Such -awards speak not only of his technical excellence but his constant -willingness to engage in an ongoing dialog with the Python community -at large. +Intellectual Property of the existing Python language. With 12 full time and 6 part time employees, Strakt is an SME representative. -Alex Martelli (FIXME: Where does Alex go? PBF?) -+++++++++++++++++++++++++++++++++++++++++++++++ - -Alex Martelli, a member of both the core Python developers and of the -Python Business Forum, is author of the best-selling book "Python in a -Nutshell", co-editor of the collectively authored "Python Cookbook", -popular for his articles on both printed and online venues, where for -excellence he was voted the title 'Martellibot' by the Python -community at large. Dr. Martelli has a history of leading -multi-cultural software development teams and providing presentations -and reports in various formats to audiences at all levels of technical -expertise. His team will include members with a diversity of languages -and backgrounds, which will prove crucial in the dissemination of -knowledge. - -Technische Universit?t Berlin (FIXME: where is Tomek now?) -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -will have Tomasz Meka doing his diploma work for a Computer Science -degree. We believe that the Pypy project opens up new avenues for -studies and research from undergraduate level to advanced researchers. -We hope to verify this through Tomek's work in the project. - Changemaker +++++++++++ adds rare project management skills by managing not only the project, @@ -293,25 +291,14 @@ Python Business Forum +++++++++++++++++++++ -is an industry organisation for companies where Python is a central -part of the business model. The PBF is registered as a non-profit -organisation under Swedish law. It has approximately 50 SME -members. The Forum has a board, which focuses on administration and -strategic issues, while the main activities occur in Special Interest -Groups (SIGs). Each SIG controls its own activities but reports to the -board in financial matters. - -The PBF will form a PyPy SIG with **Holger Krekel** as chairman to -handle its involvement in the project. - -In addition to providing coding expertise, and such Stakeholding, -The PBF also brings a number of SME parties to the project who are -eager to apply PyPy to their various products. They are user Stakeholders, -and the primary intended audience of some of our reports. Many of them, -on their own, have expressed a desire to encorporate PyPy into their +In addition to providing coding and documentation expertise, the PBF +also brings a number of SME parties to the project who are eager to +apply PyPy to their various products. They are user Stakeholders, and +the primary intended audience of some of our reports. Many of them, on +their own, have expressed a desire to encorporate PyPy into their products as soon as it is finished and stable. We will report on -their progress to the Commission as well, even though they are not -to be funded by the Commission, as an extra point of reference. +their progress to the Commission as well, even though they are not to +be funded by the Commission, as an extra point of reference. **Holger Krekel** will also be an active PBF representative in the project, with a focus on devlopment, packaging and dissemination @@ -319,24 +306,29 @@ architecture. **Christian Tismer** will join the project under the auspices of the -PBF. Chritian is the developer of Stackless Python, which is the +PBF. Christian is the developer of Stackless Python, which is the blueprint for how we intend to implement persistant threads. +**Alex Martelli**, being a prolific writer and popular speaker as well +as a Python programmer, Alex is uniquely suited for widely +disseminating the progress and the results of the project. He ilso a +board member of the PBF. + + The PBF also provides important outreach to the members of Eastern Europe, and Candiadate Countries. Since its founding, it has had -a board member responsible for precisely that. +a board member responsible for precisely that: -- - I've been a PBF board member from its founding, May 2002. I am - responsible for the Eastern Europe liasons. I am an intermediary of +- I've been a PBF board member from its founding, May 2002. I am + responsible for the Eastern Europe liasons. I am an intermediary of sorts between the PBF and the businesses located in the candidate - countries of Eastern Europe. The PBF is an important link between + countries of Eastern Europe. The PBF is an important link between businesses in the EU and the candidate countries. - Jacek Artymiak FIXME... + Jacek Artymiak Extra care will be taken to see that our results will be properly -disemminated to our PBF members in the Candiadate Countries. +disemminated to our PBF members in the Candidate Countries. Ability to deliver ++++++++++++++++++ From lac at codespeak.net Sun Oct 12 20:21:59 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 20:21:59 +0200 (MEST) Subject: [pypy-svn] rev 1799 - pypy/trunk/doc/funding Message-ID: <20031012182159.724235AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 20:21:58 2003 New Revision: 1799 Modified: pypy/trunk/doc/funding/B0.0_preamble.txt Log: reorder, with the Big Name Research on top Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Sun Oct 12 20:21:58 2003 @@ -63,17 +63,17 @@ ================ ============================================= ======================= 1 (coordinator) DFKI DFKI ---------------- --------------------------------------------- ----------------------- -2 Python Business Forum PBF +2 University of Southampton USH ---------------- --------------------------------------------- ----------------------- -3 AB Strakt Strakt +3 Max-Planck Biology Institute MPI ---------------- --------------------------------------------- ----------------------- -4 Logilab Logilab +4 Python Business Forum PBF ---------------- --------------------------------------------- ----------------------- -5 University of Southampton USH +5 AB Strakt Strakt ---------------- --------------------------------------------- ----------------------- -6 ChangeMaker ChangeMaker +6 Logilab Logilab ---------------- --------------------------------------------- ----------------------- -7 Max-Planck Biology Institute MPI +7 ChangeMaker ChangeMaker ================ ============================================= ======================= Coordinator name Alastair BURT (FIXME) From jacob at codespeak.net Sun Oct 12 20:29:57 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:29:57 +0200 (MEST) Subject: [pypy-svn] rev 1800 - pypy/trunk/doc/funding Message-ID: <20031012182957.D942D5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:29:56 2003 New Revision: 1800 Modified: pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/FIXME Log: Editing. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:29:56 2003 @@ -1,16 +1,27 @@ The consortium and project resources ===================================== -FIXME_NICO FIXME_LAURA FIXME_HOLGER check below information - **DFKI** Role: Project Coordinator & Technical Partner Country: Germany Contact: Alastair Burt - Skills, Commitment, Resources: - + Founded in 1988, DFKI today is one of the largest nonprofit contract + research institutes in the field of innovative software technology + based on Artificial Intelligence (AI) methods. DFKI is focusing on + the complete cycle of innovation - from world-class basic research + and technology development through leading-edge demonstrators and + prototypes to product functions and commercialization. + + Based in Kaiserslautern and Saarbr?cken, the German Research Center + for Artificial Intelligence ranks among the important "Centers of + Excellence" worldwide. + + An important element of DFKI's mission is to move innovations as + quickly as possible from the lab into the marketplace. Only by + maintaining research projects at the forefront of science DFKI has + the strength to meet its technology transfer goals. **AB Strakt** @@ -37,7 +48,16 @@ Country: United Kingdom Contact: Armin Rigo - Skills, Commitment, Resources: + The University of Southampton is one of the leading universities in + the UK for high-quality research across a wide range of disciplines. + + In the most recent Research Assessment Exercise (RAE) carried out by + the Higher Education Funding Council for England the University + achieved spectacular results - gaining the 5 or 5* status for 24 of + its 34 units of assessment (5* being the top rating). The University + was placed ninth in the country for the quality of its research. The + University of Southampton competes internationally as an elite + research intensive institution. **Python Business Forum** @@ -63,10 +83,23 @@ Country: France Contact: Nicolas Chauvat - Skills, Commitment, Resources: advanced computing, artificial intelligence, - applying new techniques to solve industrial clients' problems. XXXFIXME + Logilab is a French young company based in Paris (France). It + supplies solutions and services in advanced computing. Both services + and solutions rely on computing science fields yet unexploited out + of research labs but already industrially mature. Therefore, + Logilab's software and applications use tomorrow technologies and + provide innovating services to the end user. + +**Changemaker** + + Role: Project Management + Country: Sweden + Contact: Beatrice D?ring + + Change Maker is an education and consultant company, working with + enjoyable and provoking solutions for leadership, team building and + organisation change. - Sub-contracting --------------- @@ -91,7 +124,7 @@ career he has been managing projects varying from 1200 participant conventions down to 3 person development projects. He has also done electronics development and microcontroller programming, winning two -innovation awards in the process. Mr Hall?n is chairman of the Python +innovation awards in the process. Mr Hall?n is chairman of the Python Business Forum. **Armin Rigo** was born in 1976 in Lausanne, Switzerland. He is a @@ -109,7 +142,7 @@ **Holger Krekel**, born 1969 in Frankfurt a.M., began in 1985 to work as a lead programmer producing games for Electronic Arts. He went to university, gave courses in Prolog, C, Assembler, mathematics and -assisted in numerical computing. He got his degree "magna cum +assisted in numerical computing. He got his degree "magna cum laude". He consulted for Volkswagen, large German banks and the chairman of the EU-founded CEN/ISSS workshop who contracted him to prototype integration of OpenSource software. He implemented an @@ -122,12 +155,12 @@ **Tim Peters**: Over 20 years top-tier industrial experience in programming language implementation and high-performance computing. 1979-1988, Cray Research: Compiler development, Group -leader--common back-end optimization group. 1988- 1994, Kendall +leader--common back-end optimization group. 1988- 1994, Kendall Square Research (KSR), Compiler and Library development, Architecture -and FPU design. 1994-2000, Dragon Systems: Developed core speech +and FPU design. 1994-2000, Dragon Systems: Developed core speech recognition system for portable devices; scalable, large-scale telephone speech recognition; and award-winning PhoneQuery Toolkit -product. 2000 to present: Zope Corporation: Development--Core +product. 2000 to present: Zope Corporation: Development--Core technologies underlying Zope's leading content management framework; Python core. Python: first port of Python to 64- bit platform (KSR-1); POSIX pthreads support; algorithmic and optimization expertise; @@ -135,23 +168,23 @@ inception. **Alex Martelli**: Best-selling author of *Python in a -Nutshell*. Co-editor of *Python Cookbook* . ActiveState 2002 +Nutshell*. Co-editor of *Python Cookbook* . ActiveState 2002 "Activators' Choice" award. PSF member, Python langauge developer, PBF board member. Currently works for AB Strakt, developing the CAPS -framework. Also consults for other firms on Python and O-O design, +framework. Also consults for other firms on Python and O-O design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab (think3, Inc): innovative component architecture for web-enabling existing GUI- oriented apps; Event Manager, interfacing, proprietary protocols. Taught Computer Programming and Numerical Analysis, Ferrara University. 1981-1989, IBM Research: 3 Outstanding Technical -Achievement awards, voice recognition, image processing. "Laurea" +Achievement awards, voice recognition, image processing. "Laurea" 1980, Electronic Engineering, Bologna University, 100/100 magna cum laude. **Samuele Pedroni**: Born 1974 in Switzerland. Dipl. Math. ETH Zurich (1999) His thesis was awarded by the ETH Polya Fond. Between 1999-2001 he worked as teaching/published research assistant at the Institute of -Theor. CS of the ETHZ. He was designer on the state-of-the-art +Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic programming framework for Java JRGP, becoming involved in Jython (the industry-strength Java re-implemetation of Python). He is now a main developer of Jython, working on internals, compilers and @@ -163,22 +196,22 @@ optimization. **Laura Creighton**: Co-founder and lead investor of AB Strakt, Treasurer -of the PBF. Studied Physics (csc minor) at the University of Toronto, +of the PBF. Studied Physics (csc minor) at the University of Toronto, and later instructed there in Physics and Computer Science, while simultaneously working for the Canadian Armed Forces, teaching programming to non-programmers, and assisting with research in Human -Factors Engineering and Learning Techniques. Moving to the US, she +Factors Engineering and Learning Techniques. Moving to the US, she consulted for software companies and government institutions, taught Unix, project management, and interpersonal relations, and wrote a geophysical simulation system. She brings strong connections in financial and government sectors, and was an Open Source advocate -before the term was coined. Her passions: programming, empowerment of +before the term was coined. Her passions: programming, empowerment of average citizens, and the Open Society. **Beatrice D?ring** studied teaching/pedagogy at the University of Karlstad in Sweden. She was recruited into the IT-industry to work as a project manager for large scale education projects for the company -NetGuide Scandinavia, Gothenburg. Since 1998 she has been working +NetGuide Scandinavia, Gothenburg. Since 1998 she has been working with education and development project management and management of education and consultant departements, implementing Open Source strategies and Agile development methods. Beatrice also teaches @@ -192,9 +225,9 @@ projects, teaching, developing course material, creating websites. Earlier, Office Manager for a small training company, creating and editing training documents and administering the firm's -NT LAN. Up to 1994, Distribution Coordinator for a large Financial +NT LAN. Up to 1994, Distribution Coordinator for a large Financial Services company, providing field communications and training for a -sales force of 7500. In the 1980's, served as Psychological +sales force of 7500. In the 1980's, served as Psychological Operations Specialist in the US Army, receiving an Honors Degree in Russian. Education: Liberal Arts, Univ. of MN. @@ -234,7 +267,7 @@ ++++ has pervious experience of being a project coordinator in EU projects, ensuring smooth communication between the project and the FP6 project -officer. +officer. Max Planck Institut +++++++++++++++++++ @@ -266,7 +299,7 @@ Strakt will also bring Tim Peters to the project. Tim has always been a core developer of the Python langauge, what we call CPython. Apart from being an outstanding programmer, Tim has intimate knowledge about -all the details of the Python language definition. As Director of the +all the details of the Python language definition. As Director of the Python Software foundation, Tim Peters is also responsible for the Intellectual Property of the existing Python language. @@ -296,7 +329,7 @@ apply PyPy to their various products. They are user Stakeholders, and the primary intended audience of some of our reports. Many of them, on their own, have expressed a desire to encorporate PyPy into their -products as soon as it is finished and stable. We will report on +products as soon as it is finished and stable. We will report on their progress to the Commission as well, even though they are not to be funded by the Commission, as an extra point of reference. @@ -316,8 +349,8 @@ The PBF also provides important outreach to the members of Eastern -Europe, and Candiadate Countries. Since its founding, it has had -a board member responsible for precisely that: +Europe, and Candiadate Countries. Since its founding, it has had +a board member responsible for precisely that: - I've been a PBF board member from its founding, May 2002. I am responsible for the Eastern Europe liasons. I am an intermediary of @@ -361,56 +394,56 @@ ------------------------- In any project there are three crucial resources to be mobilised. -The first is equipment. The PyPy project needs very little. We +The first is equipment. The PyPy project needs very little. We would like to purchase a Projector, for use in displaying code -at Sprints. We would also like to purchase a portable printable -whiteboard. We draw a lot at Sprints, and would like to be able to +at Sprints. We would also like to purchase a portable printable +whiteboard. We draw a lot at Sprints, and would like to be able to give every attendee a copy of the diagrams we made at the touch -of a button for use at home in between Sprints. Each of these +of a button for use at home in between Sprints. Each of these will cost somewhere between 1 and 2 thousand euros. -The second is Finance. We don't need to mobilise outside financial -contributions, though we have some excellent connections. AB Strakt, +The second is Finance. We don't need to mobilise outside financial +contributions, though we have some excellent connections. AB Strakt, and The Python Business Forum have already arranged for bank -guarantees, should they be required by the Commission. The PBF and AB +guarantees, should they be required by the Commission. The PBF and AB Strakt both use KPMG as their standard auditor, and a KPMG recommended bookkeeper who is familiar with EU project funding for their daily -business practices. Everybody else has already been involved in +business practices. Everybody else has already been involved in successful EU projects, and will simply continue their usual behaviour. -And the third, and most important, is people. This is where this -Consortium really shines. Not only have we already attracted some of +And the third, and most important, is people. This is where this +Consortium really shines. Not only have we already attracted some of the top people in the Python community in this project, we also have a plan to continue to attract the interest, support, and constructive -criticism of the very best. The Open Source movement is all about -community. This fact is often overlooked by people who are -discovering us for the first time. It is all about people and not -only about licensing. Successful Open Source projects are based on -sharing and trust, process rather than product, and key people. The +criticism of the very best. The Open Source movement is all about +community. This fact is often overlooked by people who are +discovering us for the first time. It is all about people and not +only about licensing. Successful Open Source projects are based on +sharing and trust, process rather than product, and key people. The same is true of Agile development methods, as defined by the Agile -Alliance. +Alliance. We are pioneers of a software development method, Sprint Driven -Development, which promises to mobilise people in a unique and -special way. We outline *what* we do in Section 5 -- Project -Management. Here we would only like to speak briefly of *one +Development, which promises to mobilise people in a unique and +special way. We outline *what* we do in Section 5 -- Project +Management. Here we would only like to speak briefly of *one reason why we do this*. -One of the classics of software management is Fred Brooks -*The Mythical Man Month*. FIXME how do we do references? +One of the classics of software management is Fred Brooks +*The Mythical Man Month*. In it he asserts the then-controversial, and now well-established claim: 'Adding people to a late software project makes it later'. This is because the communications cost of 'bringing a new person up to speed' outweighs the benefits you can get by putting them on the -project. And some projects are just too large -- the burden of simply +project. And some projects are just too large -- the burden of simply letting the left hand know what the right hand is doing is crippling. Sprint Driven Development is an attempt to make a development -model which refutes this claim. What would you get if you didn't +model which refutes this claim. What would you get if you didn't have to 'bring people up to speed' because *they were already -aware of the project*? If you published everything you were doing +aware of the project*? If you published everything you were doing and made constant efforts to communicate where you were, and why you were doing things to the base of programmers you might *someday* like to have on your project, then when time came to @@ -419,40 +452,40 @@ could be shared among programmers) they would already be mostly ready to go. -You could not do that in a proprietary environment. You _can_ do this -in the Open Source Software community. A for-profit company cannot +You could not do that in a proprietary environment. You _can_ do this +in the Open Source Software community. A for-profit company cannot afford to have very many people just sitting around, preparing, absorbing knowledge, in case they might be needed somewhere. Commercial software companies pay their people to write code. But -outside the company is the competition. Sharing is thus frowned upon. +outside the company is the competition. Sharing is thus frowned upon. -But there are three groups who function this way, all the time. They +But there are three groups who function this way, all the time. They are always sitting around learning things. The first group are -students, and teachers. The second are those people in industries +students, and teachers. The second are those people in industries which have an off-season -- tax preparers and fishermen both fit this -pattern. And the third are software consultants, both small and those -in large IT consulting firms. Learning things is called 'keeping +pattern. And the third are software consultants, both small and those +in large IT consulting firms. Learning things is called 'keeping current' and is essential to maintaining competitiveness as a software -consultant. I will call these people 'seasonal workers' though the -term is not quite accurate. The important thing is that you can -mobilise them for short projects. And the Open Source community _has_ +consultant. I will call these people 'seasonal workers' though the +term is not quite accurate. The important thing is that you can +mobilise them for short projects. And the Open Source community _has_ mobilised them quite effectively. Sprinting is more than just an effort to maximise creativity by putting all your creative people in a room and letting them bounce -ideas off each other and write code to test theories. (Though it is -that, too, and that is very important.) Sprinting is also an way to +ideas off each other and write code to test theories. (Though it is +that, too, and that is very important.) Sprinting is also an way to constantly involve the community and disseminate knowledge, especially the more difficult 'know-how', as opposed to 'know-that' which one can -read in books, papers, mailing lists and websites. It keeps people +read in books, papers, mailing lists and websites. It keeps people 'in the loop' -- ready to contribute should it be necessary -- especially when combined with the sort of supplementary materials we -intend to produce. ('Know-that' is good too, it is just that it is +intend to produce. ('Know-that' is good too, it is just that it is 'know-how' that you need to bring a new person up to speed in a project.) The PBF, as a non-profit, is a vehicle which is perfect for harnassing -the skills of the seasonal worker, particularly those in SMEs. SMEs +the skills of the seasonal worker, particularly those in SMEs. SMEs will not have to dedicate a full person to a project, full-time, but can contribute 'only to one work package' or 'only to one task in one work package' -- some small chunk that is reasonable for them to do. @@ -463,8 +496,8 @@ Overall Financial Plan ---------------------- -Show that the overall financial plan for the project is adequate. -FIXME_LAURA find out what the heck belongs here. Still no answer +Show that the overall financial plan for the project is adequate. +FIXME_LAURA find out what the heck belongs here. Still no answer FIXME_NICO (get from Gantt?) Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 20:29:56 2003 @@ -30,9 +30,7 @@ Reviewed Anna B2.relevance_to_IST -The following need writing: -Links and Complimentary with Other Programmes -Contribution to Community Social Objectives +Review B3.impact FIXME include http://www.python.org/peps/pep-0001.html @@ -40,7 +38,7 @@ Review B4.resources -Add organisations +Edit organisations Are we lacking any CVs? Find out. FIXME's Add formatting to people From jacob at codespeak.net Sun Oct 12 20:42:29 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:42:29 +0200 (MEST) Subject: [pypy-svn] rev 1801 - pypy/trunk/doc/funding Message-ID: <20031012184229.3CE1E5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:42:28 2003 New Revision: 1801 Modified: pypy/trunk/doc/funding/FIXME Log: Editing. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 20:42:28 2003 @@ -39,7 +39,6 @@ B4.resources Edit organisations -Are we lacking any CVs? Find out. FIXME's Add formatting to people Review From jacob at codespeak.net Sun Oct 12 20:42:42 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:42:42 +0200 (MEST) Subject: [pypy-svn] rev 1802 - pypy/trunk/doc/funding Message-ID: <20031012184242.1DE9E5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:42:40 2003 New Revision: 1802 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Editing. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:42:40 2003 @@ -7,12 +7,13 @@ Country: Germany Contact: Alastair Burt - Founded in 1988, DFKI today is one of the largest nonprofit contract - research institutes in the field of innovative software technology - based on Artificial Intelligence (AI) methods. DFKI is focusing on - the complete cycle of innovation - from world-class basic research - and technology development through leading-edge demonstrators and - prototypes to product functions and commercialization. + Founded in 1988, DFKI (http://www.dfki.de/) today is one of the + largest nonprofit contract research institutes in the field of + innovative software technology based on Artificial Intelligence (AI) + methods. DFKI is focusing on the complete cycle of innovation - from + world-class basic research and technology development through + leading-edge demonstrators and prototypes to product functions and + commercialization. Based in Kaiserslautern and Saarbr?cken, the German Research Center for Artificial Intelligence ranks among the important "Centers of @@ -29,17 +30,18 @@ Country: Sweden Contact: Jacob Hall?n - AB Strakt is a software product developing company located in - G?teborg, Sweden. The main product of the company is CAPS, a - platform for constructing collaborative workflow systems. On top of - this platform the company has built a number of applications; - helpdesk, project management, customer relations management and - procurement. All products are built in Python. Strakt is involved in - the development of several OpenSource projects, which in one way or - another play a role in the company's software development. The main - development platform is Linux. The company has 12 full time - employees, of which one resides in Italy and one in the Netherlands, - and 6 part time employees. The company was formed in January 2001. + AB Strakt (http://www.strakt.com) is a software product developing + company located in G?teborg, Sweden. The main product of the company + is CAPS, a platform for constructing collaborative workflow + systems. On top of this platform the company has built a number of + applications; helpdesk, project management, customer relations + management and procurement. All products are built in Python. Strakt + is involved in the development of several OpenSource projects, which + in one way or another play a role in the company's software + development. The main development platform is Linux. The company has + 12 full time employees, of which one resides in Italy and one in the + Netherlands, and 6 part time employees. The company was formed in + January 2001. **University of Southampton** @@ -48,8 +50,9 @@ Country: United Kingdom Contact: Armin Rigo - The University of Southampton is one of the leading universities in - the UK for high-quality research across a wide range of disciplines. + The University of Southampton (http://www.soton.ac.uk) is one of the + leading universities in the UK for high-quality research across a + wide range of disciplines. In the most recent Research Assessment Exercise (RAE) carried out by the Higher Education Funding Council for England the University @@ -66,13 +69,14 @@ Country: Europe Contact: Holger Krekel - The PBF is an industry organisation for companies where Python is a - central part of the business model. The PBF is registered as a - non-profit organisation under Swedish law. It has approximately 50 - SME members. The Forum has a board, which focuses on administration - and strategic issues, while the main activities occur in Special - Interest Groups (SIGs). Each SIG controls its own activities but - reports to the board in financial matters. + The PBF (http://python-in-business.org) is an industry organisation + for companies where Python is a central part of the business + model. The PBF is registered as a non-profit organisation under + Swedish law. It has approximately 50 SME members. The Forum has a + board, which focuses on administration and strategic issues, while + the main activities occur in Special Interest Groups (SIGs). Each + SIG controls its own activities but reports to the board in + financial matters. The PBF will form a PyPy SIG with **Holger Krekel** as chairman to handle its involvement in the project. @@ -83,24 +87,58 @@ Country: France Contact: Nicolas Chauvat - Logilab is a French young company based in Paris (France). It - supplies solutions and services in advanced computing. Both services - and solutions rely on computing science fields yet unexploited out - of research labs but already industrially mature. Therefore, - Logilab's software and applications use tomorrow technologies and - provide innovating services to the end user. + Logilab (http://www.logilab.com) is a French young company based in + Paris (France). It supplies solutions and services in advanced + computing. Both services and solutions rely on computing science + fields yet unexploited out of research labs but already industrially + mature. Therefore, Logilab's software and applications use tomorrow + technologies and provide innovating services to the end user. **Changemaker** - Role: Project Management + Role: Project Management Country: Sweden Contact: Beatrice D?ring - Change Maker is an education and consultant company, working with - enjoyable and provoking solutions for leadership, team building and - organisation change. + Change Maker (http://www.changemaker.nu) is an education and + consultant company, working with enjoyable and provoking solutions + for leadership, team building and organisation change. + +**Max-Planck Institut f?r Infektionsbiologie** + + Role: Project Management + Country: Germany + Contact: Mark Achtman + + The Max-Planck Institut f?r Infektionsbiologie + (http://www.mpiib-berlin.mpg.de) contains over 200 scientific and + technical staff, including a small bioinformatics group, and is + dedicated to basic research on problems relating to infectious + diseases. The institute performs molecular biological, cell + biological and immunological research on multiple bacterial + pathogens, that are variously responsible for millions of deaths per + year due to tuberculosis, dysentery, meningitis and other + diseases. Within the institute, a research group of 7 scientists led + by Dr. Mark Achtman + (http://www.mpiib-berlin.mpg.de/institut/molecular01.htm) + concentrates on reconstructing the evolution of bacterial + pathogens. Approaches from the fields of bioinformatics, population + genetics and theoretical biology are used to elucidate signals + within DNA sequences of bacteria from epidemiologically relevant + collections. In recent years, the group has demonstrated that + certain bacterial pathogens evolved only very recently while others + have accompanied the spread of anatomically modern humans throughout + the last 200,000 years. These analyses are performed in a + heterogeneous network of Windows and UNIX workstations and data is + stored in a variety of different database systems. Global WEB-based + publication of data within the databases + (http://web.mpiib-berlin.mpg.de) will be greatly expanded in the + immediate future. The group uses Python extensively for its + bioinformatic analyses, will help in the development of Pypy and + will act as a test site to evaluate increased performance within its + bioinformatic activities. -Sub-contracting +Sub-contracting --------------- Some pure accounting and auditing tasks will be subcontracted. No core From jacob at codespeak.net Sun Oct 12 20:47:24 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:47:24 +0200 (MEST) Subject: [pypy-svn] rev 1803 - pypy/trunk/doc/funding Message-ID: <20031012184724.5AF6E5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:47:23 2003 New Revision: 1803 Modified: pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/FIXME Log: Editing. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:47:23 2003 @@ -2,7 +2,8 @@ ===================================== **DFKI** - + + :: Role: Project Coordinator & Technical Partner Country: Germany Contact: Alastair Burt @@ -26,6 +27,7 @@ **AB Strakt** + :: Role: Project Management & Technical Partner Country: Sweden Contact: Jacob Hall?n @@ -46,6 +48,7 @@ **University of Southampton** + :: Role: Technical Partner Country: United Kingdom Contact: Armin Rigo @@ -65,6 +68,7 @@ **Python Business Forum** + :: Role: Technical Partner Country: Europe Contact: Holger Krekel @@ -83,6 +87,7 @@ **Logilab** + :: Role: Technical Partner Country: France Contact: Nicolas Chauvat @@ -96,6 +101,7 @@ **Changemaker** + :: Role: Project Management Country: Sweden Contact: Beatrice D?ring @@ -106,6 +112,7 @@ **Max-Planck Institut f?r Infektionsbiologie** + :: Role: Project Management Country: Germany Contact: Mark Achtman @@ -390,11 +397,11 @@ Europe, and Candiadate Countries. Since its founding, it has had a board member responsible for precisely that: -- I've been a PBF board member from its founding, May 2002. I am - responsible for the Eastern Europe liasons. I am an intermediary of - sorts between the PBF and the businesses located in the candidate - countries of Eastern Europe. The PBF is an important link between - businesses in the EU and the candidate countries. +- I've been a PBF board member from its founding. I am responsible for + the Eastern Europe liasons. I am an intermediary of sorts between + the PBF and the businesses located in the candidate countries of + Eastern Europe. The PBF is an important link between businesses in + the EU and the candidate countries. Jacek Artymiak Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 20:47:23 2003 @@ -40,7 +40,6 @@ B4.resources Edit organisations FIXME's -Add formatting to people Review 4.7 READY FOR REVIEW, and I want Alastair in on it Laura From jacob at codespeak.net Sun Oct 12 20:48:42 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:48:42 +0200 (MEST) Subject: [pypy-svn] rev 1804 - pypy/trunk/doc/funding Message-ID: <20031012184842.916F75AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:48:41 2003 New Revision: 1804 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: Fixed spelling. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Sun Oct 12 20:48:41 2003 @@ -158,7 +158,7 @@ among its developers, and beneficiaries of a focussed effort in knowledge dissemination. -Contributiuon to EC Policies +Contribution to EC Policies ++++++++++++++++++++++++++++ There will be transfer of knowledge from research to industry through From lac at codespeak.net Sun Oct 12 20:50:35 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 20:50:35 +0200 (MEST) Subject: [pypy-svn] rev 1805 - pypy/trunk/doc/funding Message-ID: <20031012185035.8EEFF5AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 20:50:34 2003 New Revision: 1805 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: Change Objectives to be more like Johan or Michel, I forget which, wanted. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sun Oct 12 20:50:34 2003 @@ -3,7 +3,7 @@ The full title of the Proposal is 'Pypy: A flexible, modular, self-hosting, next-generation specialising compiler for the - Open Source Programming Language Python'. + Open Source Programming Language Platform Python'. **Proposal acronym:** @@ -16,19 +16,19 @@ services' of the Second Call of the Information Society Technologies Workprogramme. - Since this is foundational applied - research, focusing on fundamental design concepts, it will have - significant indirect effects wherever the Python programming - langauge is taught or deployed. It will reduce the current wide - gap between academic computer science and industrial programming - tools, thus contributing to European competitiveness and prosperity, - and enhancing openness and security in the public and private - sector. An estimated 175,000 Python programmers world-wide will - get an improved programming language. All their customers will - benefit. The Python Business Forum, a non-profit Trade organisation - of FIXME WHAT IS THE JABBER -- SIGNIFICANT PYTHON is poised - to take advantage of this new development. - FIXME_LAURA FIXME_BEA ADD COMMUNICATION STRATEGIC OBJ + Our primary Technical objective is to build an open run-time environment + for the Open Source Programming language Python. This will + facilitate the development and production of networked and distributed + software systems and services, and embedded software. + + Our primary Methological objective is to showcase a novel + software engineering process, Sprint Driven Development. This is + an Agile methodology, providing a dynamic and adaptive + environment, suitable for co-operative and distributed + development. + + + **Proposal abstract:** From jacob at codespeak.net Sun Oct 12 20:52:15 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:52:15 +0200 (MEST) Subject: [pypy-svn] rev 1806 - pypy/trunk/doc/funding Message-ID: <20031012185215.E7FE35AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:52:15 2003 New Revision: 1806 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Formatting Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:52:15 2003 @@ -3,7 +3,7 @@ **DFKI** - :: +:: Role: Project Coordinator & Technical Partner Country: Germany Contact: Alastair Burt @@ -27,7 +27,7 @@ **AB Strakt** - :: +:: Role: Project Management & Technical Partner Country: Sweden Contact: Jacob Hall?n @@ -48,7 +48,7 @@ **University of Southampton** - :: +:: Role: Technical Partner Country: United Kingdom Contact: Armin Rigo @@ -68,7 +68,7 @@ **Python Business Forum** - :: +:: Role: Technical Partner Country: Europe Contact: Holger Krekel @@ -87,7 +87,7 @@ **Logilab** - :: +:: Role: Technical Partner Country: France Contact: Nicolas Chauvat @@ -101,7 +101,7 @@ **Changemaker** - :: +:: Role: Project Management Country: Sweden Contact: Beatrice D?ring @@ -112,7 +112,7 @@ **Max-Planck Institut f?r Infektionsbiologie** - :: +:: Role: Project Management Country: Germany Contact: Mark Achtman From jacob at codespeak.net Sun Oct 12 20:56:49 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 20:56:49 +0200 (MEST) Subject: [pypy-svn] rev 1807 - pypy/trunk/doc/funding Message-ID: <20031012185649.D7D525AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 20:56:49 2003 New Revision: 1807 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Not friends with ReST. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 20:56:49 2003 @@ -4,6 +4,7 @@ **DFKI** :: + Role: Project Coordinator & Technical Partner Country: Germany Contact: Alastair Burt @@ -28,6 +29,7 @@ **AB Strakt** :: + Role: Project Management & Technical Partner Country: Sweden Contact: Jacob Hall?n @@ -49,6 +51,7 @@ **University of Southampton** :: + Role: Technical Partner Country: United Kingdom Contact: Armin Rigo @@ -69,6 +72,7 @@ **Python Business Forum** :: + Role: Technical Partner Country: Europe Contact: Holger Krekel @@ -88,6 +92,7 @@ **Logilab** :: + Role: Technical Partner Country: France Contact: Nicolas Chauvat @@ -102,6 +107,7 @@ **Changemaker** :: + Role: Project Management Country: Sweden Contact: Beatrice D?ring @@ -113,6 +119,7 @@ **Max-Planck Institut f?r Infektionsbiologie** :: + Role: Project Management Country: Germany Contact: Mark Achtman From jacob at codespeak.net Sun Oct 12 21:01:21 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:01:21 +0200 (MEST) Subject: [pypy-svn] rev 1808 - pypy/trunk/doc/funding Message-ID: <20031012190121.34DF05AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:01:20 2003 New Revision: 1808 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Not friends with ReST. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Sun Oct 12 21:01:20 2003 @@ -9,22 +9,21 @@ Country: Germany Contact: Alastair Burt - Founded in 1988, DFKI (http://www.dfki.de/) today is one of the - largest nonprofit contract research institutes in the field of - innovative software technology based on Artificial Intelligence (AI) - methods. DFKI is focusing on the complete cycle of innovation - from - world-class basic research and technology development through - leading-edge demonstrators and prototypes to product functions and - commercialization. - - Based in Kaiserslautern and Saarbr?cken, the German Research Center - for Artificial Intelligence ranks among the important "Centers of - Excellence" worldwide. - - An important element of DFKI's mission is to move innovations as - quickly as possible from the lab into the marketplace. Only by - maintaining research projects at the forefront of science DFKI has - the strength to meet its technology transfer goals. +Founded in 1988, DFKI (http://www.dfki.de/) today is one of the +contract research institutes in the field of innovative software +technology based on Artificial Intelligence (AI) methods. DFKI is +focusing on the complete cycle of innovation - from world-class basic +research and technology development through leading-edge demonstrators +and prototypes to product functions and commercialization. + +Based in Kaiserslautern and Saarbr?cken, the German Research Center +for Artificial Intelligence ranks among the important "Centers of +Excellence" worldwide. + +An important element of DFKI's mission is to move innovations as +quickly as possible from the lab into the marketplace. Only by +maintaining research projects at the forefront of science DFKI has the +strength to meet its technology transfer goals. **AB Strakt** @@ -34,18 +33,18 @@ Country: Sweden Contact: Jacob Hall?n - AB Strakt (http://www.strakt.com) is a software product developing - company located in G?teborg, Sweden. The main product of the company - is CAPS, a platform for constructing collaborative workflow - systems. On top of this platform the company has built a number of - applications; helpdesk, project management, customer relations - management and procurement. All products are built in Python. Strakt - is involved in the development of several OpenSource projects, which - in one way or another play a role in the company's software - development. The main development platform is Linux. The company has - 12 full time employees, of which one resides in Italy and one in the - Netherlands, and 6 part time employees. The company was formed in - January 2001. +AB Strakt (http://www.strakt.com) is a software product developing +company located in G?teborg, Sweden. The main product of the company +is CAPS, a platform for constructing collaborative workflow +systems. On top of this platform the company has built a number of +applications; helpdesk, project management, customer relations +management and procurement. All products are built in Python. Strakt +is involved in the development of several OpenSource projects, which +in one way or another play a role in the company's software +development. The main development platform is Linux. The company has +12 full time employees, of which one resides in Italy and one in the +Netherlands, and 6 part time employees. The company was formed in +January 2001. **University of Southampton** @@ -56,17 +55,17 @@ Country: United Kingdom Contact: Armin Rigo - The University of Southampton (http://www.soton.ac.uk) is one of the - leading universities in the UK for high-quality research across a - wide range of disciplines. - - In the most recent Research Assessment Exercise (RAE) carried out by - the Higher Education Funding Council for England the University - achieved spectacular results - gaining the 5 or 5* status for 24 of - its 34 units of assessment (5* being the top rating). The University - was placed ninth in the country for the quality of its research. The - University of Southampton competes internationally as an elite - research intensive institution. +The University of Southampton (http://www.soton.ac.uk) is one of the +leading universities in the UK for high-quality research across a wide +range of disciplines. + +In the most recent Research Assessment Exercise (RAE) carried out by +the Higher Education Funding Council for England the University +achieved spectacular results - gaining the 5 or 5* status for 24 of +its 34 units of assessment (5* being the top rating). The University +was placed ninth in the country for the quality of its research. The +University of Southampton competes internationally as an elite +research intensive institution. **Python Business Forum** @@ -77,17 +76,17 @@ Country: Europe Contact: Holger Krekel - The PBF (http://python-in-business.org) is an industry organisation - for companies where Python is a central part of the business - model. The PBF is registered as a non-profit organisation under - Swedish law. It has approximately 50 SME members. The Forum has a - board, which focuses on administration and strategic issues, while - the main activities occur in Special Interest Groups (SIGs). Each - SIG controls its own activities but reports to the board in - financial matters. +The PBF (http://python-in-business.org) is an industry organisation +for companies where Python is a central part of the business +model. The PBF is registered as a non-profit organisation under +Swedish law. It has approximately 50 SME members. The Forum has a +board, which focuses on administration and strategic issues, while the +main activities occur in Special Interest Groups (SIGs). Each SIG +controls its own activities but reports to the board in financial +matters. - The PBF will form a PyPy SIG with **Holger Krekel** as chairman to - handle its involvement in the project. +The PBF will form a PyPy SIG with **Holger Krekel** as chairman to +handle its involvement in the project. **Logilab** @@ -97,12 +96,12 @@ Country: France Contact: Nicolas Chauvat - Logilab (http://www.logilab.com) is a French young company based in - Paris (France). It supplies solutions and services in advanced - computing. Both services and solutions rely on computing science - fields yet unexploited out of research labs but already industrially - mature. Therefore, Logilab's software and applications use tomorrow - technologies and provide innovating services to the end user. +Logilab (http://www.logilab.com) is a French young company based in +Paris (France). It supplies solutions and services in advanced +computing. Both services and solutions rely on computing science +fields yet unexploited out of research labs but already industrially +mature. Therefore, Logilab's software and applications use tomorrow +technologies and provide innovating services to the end user. **Changemaker** @@ -112,9 +111,9 @@ Country: Sweden Contact: Beatrice D?ring - Change Maker (http://www.changemaker.nu) is an education and - consultant company, working with enjoyable and provoking solutions - for leadership, team building and organisation change. +Change Maker (http://www.changemaker.nu) is an education and +consultant company, working with enjoyable and provoking solutions for +leadership, team building and organisation change. **Max-Planck Institut f?r Infektionsbiologie** @@ -124,33 +123,31 @@ Country: Germany Contact: Mark Achtman - The Max-Planck Institut f?r Infektionsbiologie - (http://www.mpiib-berlin.mpg.de) contains over 200 scientific and - technical staff, including a small bioinformatics group, and is - dedicated to basic research on problems relating to infectious - diseases. The institute performs molecular biological, cell - biological and immunological research on multiple bacterial - pathogens, that are variously responsible for millions of deaths per - year due to tuberculosis, dysentery, meningitis and other - diseases. Within the institute, a research group of 7 scientists led - by Dr. Mark Achtman - (http://www.mpiib-berlin.mpg.de/institut/molecular01.htm) - concentrates on reconstructing the evolution of bacterial - pathogens. Approaches from the fields of bioinformatics, population - genetics and theoretical biology are used to elucidate signals - within DNA sequences of bacteria from epidemiologically relevant - collections. In recent years, the group has demonstrated that - certain bacterial pathogens evolved only very recently while others - have accompanied the spread of anatomically modern humans throughout - the last 200,000 years. These analyses are performed in a - heterogeneous network of Windows and UNIX workstations and data is - stored in a variety of different database systems. Global WEB-based - publication of data within the databases - (http://web.mpiib-berlin.mpg.de) will be greatly expanded in the - immediate future. The group uses Python extensively for its - bioinformatic analyses, will help in the development of Pypy and - will act as a test site to evaluate increased performance within its - bioinformatic activities. +The Max-Planck Institut f?r Infektionsbiologie +(http://www.mpiib-berlin.mpg.de) contains over 200 scientific and +technical staff, including a small bioinformatics group, and is +dedicated to basic research on problems relating to infectious +diseases. The institute performs molecular biological, cell biological +and immunological research on multiple bacterial pathogens, that are +variously responsible for millions of deaths per year due to +tuberculosis, dysentery, meningitis and other diseases. Within the +institute, a research group of 7 scientists led by Dr. Mark Achtman +(http://www.mpiib-berlin.mpg.de/institut/molecular01.htm) concentrates +on reconstructing the evolution of bacterial pathogens. Approaches +from the fields of bioinformatics, population genetics and theoretical +biology are used to elucidate signals within DNA sequences of bacteria +from epidemiologically relevant collections. In recent years, the +group has demonstrated that certain bacterial pathogens evolved only +very recently while others have accompanied the spread of anatomically +modern humans throughout the last 200,000 years. These analyses are +performed in a heterogeneous network of Windows and UNIX workstations +and data is stored in a variety of different database systems. Global +WEB-based publication of data within the databases +(http://web.mpiib-berlin.mpg.de) will be greatly expanded in the +immediate future. The group uses Python extensively for its +bioinformatic analyses, will help in the development of Pypy and will +act as a test site to evaluate increased performance within its +bioinformatic activities. Sub-contracting --------------- From pedronis at codespeak.net Sun Oct 12 21:06:20 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 21:06:20 +0200 (MEST) Subject: [pypy-svn] rev 1809 - pypy/trunk/doc/funding Message-ID: <20031012190620.90D335AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 21:06:19 2003 New Revision: 1809 Modified: pypy/trunk/doc/funding/endorsements.asc (contents, props changed) Log: set eol-style for endorsements.asc Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Sun Oct 12 21:06:19 2003 @@ -1,34 +1,34 @@ - - -- - Kaval Wireless Technologies Inc. uses Python in a variety of ways - in the development and production of its wireless coverage extension - systems, as well as using it in some of the products themselves. The - PyPy project holds great promise for improving the performance and - cross-platform nature of the Python environment, and I look forward - to seeing those improvements occur. - - Peter Hansen, P.Eng. - Director, Software Engineering, - Kaval Wireless Technologies Inc. - - -- - I'm interested in PyPy because it's about Python, the - pragmatic language that I use for my business and make my living with, and - because it promises pragmatic benefits (performance is my personal - #1, but there is a lot of other potential). - - Martijn Faassen, Infrae Netherlands - - -- - As a vendor of development tools for Python programmers, we support PyPy - as an important step towards advancing the technology behind Python - programming language - - Stephan Deibel CEO(FIXME? or use President), Archaeopteryx Software, Inc. - - - - + + +- + Kaval Wireless Technologies Inc. uses Python in a variety of ways + in the development and production of its wireless coverage extension + systems, as well as using it in some of the products themselves. The + PyPy project holds great promise for improving the performance and + cross-platform nature of the Python environment, and I look forward + to seeing those improvements occur. + + Peter Hansen, P.Eng. + Director, Software Engineering, + Kaval Wireless Technologies Inc. + + +- + I'm interested in PyPy because it's about Python, the + pragmatic language that I use for my business and make my living with, and + because it promises pragmatic benefits (performance is my personal + #1, but there is a lot of other potential). + + Martijn Faassen, Infrae Netherlands + + +- + As a vendor of development tools for Python programmers, we support PyPy + as an important step towards advancing the technology behind Python + programming language + + Stephan Deibel CEO(FIXME? or use President), Archaeopteryx Software, Inc. + + + + From jacob at codespeak.net Sun Oct 12 21:29:56 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:29:56 +0200 (MEST) Subject: [pypy-svn] rev 1810 - pypy/trunk/doc/funding Message-ID: <20031012192956.EE0515AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:29:56 2003 New Revision: 1810 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Tried to fix broken formatting. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sun Oct 12 21:29:56 2003 @@ -214,42 +214,54 @@ .. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html + .. file = ivme03.pdf .. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers and Modular Interpreters". 22nd ACM Symposium on Principles of Programming Languages (POPL'95). January 1995. http://java.sun.com/people/sl/papers/popl95.ps.gz + .. file = popl95.ps.gz .. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. 1998. http://haskell.org/frp/dsl.ps + .. file = dsl.ps.gz .. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". 1997. http://citeseer.nj.nec.com/kelsey97prescheme.html + .. file = kelsey97prescheme.pdf .. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. "Back to the future: The story of Squeak, A practical Smalltalk written in itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. -ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html.. file = -OOPSLA.Squeak.htm.. [A03] John Aycock, "A Brief History of Just-In-Time", ACM -Computing Surveys 35, 2 (June 2003), pp. 97-113... file = jit-history.pdf +ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +.. file = OOPSLA.Squeak.htm + +.. [A03] John Aycock, "A Brief History of + Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. + +.. file = jit-history.pdf .. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a Universal Implementation Substrate for Object-Oriented Languages", OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + .. file = oopsla-vm-wkshp.pdf .. [R03] Armin Rigo, http://psyco.sourceforge.net + .. file = psycoguide.ps.gz .. [APJ03] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. http://pages.cpsc.ucalgary.ca/~aycock/papers/ucpy.pdf + .. file = ucpy-reverse-engineering-python.pdf .. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, @@ -258,17 +270,20 @@ as Springer Verlag Lecture Notes in Computer Science 512, Springer Verlag, Berlin, 1991. http://self.sunlabs.com/papers/ecoop91.ps.Z + .. file = hlzle91optimizing.ps.gz .. [HU94] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented -Languages", PLDI '94 and OOPSLA '94 - -http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with --performance.pdf.. file = reconciling-responsiveness-with-performance.pdf + Languages", PLDI '94 and OOPSLA '94 + http://www.cs.ucsb.edu/oocsb/papers/toplas96.pdf/reconciling-responsiveness-with-performance.pdf + +.. file = reconciling-responsiveness-with-performance.pdf + .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 -http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web -.pdf.. file = kiczales97aspectoriented.pdf \ No newline at end of file +http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf + +.. file = kiczales97aspectoriented.pdf \ No newline at end of file From jacob at codespeak.net Sun Oct 12 21:32:08 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:32:08 +0200 (MEST) Subject: [pypy-svn] rev 1811 - pypy/trunk/doc/funding Message-ID: <20031012193208.6A2F75AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:32:07 2003 New Revision: 1811 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Tried to fix broken formatting. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sun Oct 12 21:32:07 2003 @@ -212,8 +212,8 @@ References: -.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native -Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native + Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html .. file = ivme03.pdf From jacob at codespeak.net Sun Oct 12 21:35:46 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:35:46 +0200 (MEST) Subject: [pypy-svn] rev 1812 - pypy/trunk/doc/funding Message-ID: <20031012193546.76BB95AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:35:45 2003 New Revision: 1812 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Tried to fix broken formatting. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sun Oct 12 21:35:45 2003 @@ -225,19 +225,20 @@ .. file = popl95.ps.gz .. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. -1998. http://haskell.org/frp/dsl.ps + 1998. http://haskell.org/frp/dsl.ps .. file = dsl.ps.gz -.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming". -1997. http://citeseer.nj.nec.com/kelsey97prescheme.html +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems + Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html .. file = kelsey97prescheme.pdf -.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. -"Back to the future: The story of Squeak, A practical Smalltalk written in -itself." In Proceedings OOPSLA'97, pages 318--326, November 1997. -ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and + Alan Kay. "Back to the future: The story of Squeak, A practical + Smalltalk written in itself." In Proceedings OOPSLA'97, pages + 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html .. file = OOPSLA.Squeak.htm @@ -246,10 +247,11 @@ .. file = jit-history.pdf -.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, - "Towards a Universal Implementation Substrate for Object-Oriented Languages", -OOPSLA 99 workshop on Simplicity, Performance and Portability in Virtual -Machine Design, OOPSLA '99, Denver, CO, Nov 2, 1999. +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a + Universal Implementation Substrate for Object-Oriented + Languages",OOPSLA 99 workshop on Simplicity, Performance and + Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov + 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf .. file = oopsla-vm-wkshp.pdf From jacob at codespeak.net Sun Oct 12 21:39:03 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:39:03 +0200 (MEST) Subject: [pypy-svn] rev 1813 - pypy/trunk/doc/funding Message-ID: <20031012193903.6802A5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:39:02 2003 New Revision: 1813 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Fixed broken formatting. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Sun Oct 12 21:39:02 2003 @@ -285,7 +285,6 @@ .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 - -http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf + http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf .. file = kiczales97aspectoriented.pdf \ No newline at end of file From hpk at codespeak.net Sun Oct 12 21:49:59 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 21:49:59 +0200 (MEST) Subject: [pypy-svn] rev 1814 - pypy/trunk/doc/funding Message-ID: <20031012194959.5591F5AD89@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 21:49:58 2003 New Revision: 1814 Added: pypy/trunk/doc/funding/abstract.asc Log: a new try on the abstract (after some good criticism of Laura on alastairs abstract) please comment. Added: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 21:49:58 2003 @@ -0,0 +1,37 @@ + Main goals + + The project will research and implement a flexible, configurable and + performant version of Python, a popular opensource programming language. + Much anecdotal, and some empirical, evidence suggests that Python is one + of the easiest programming languages to learn and is one of the languages + in which one can code up a given algorithm the fastest. The project + aims to bring this highly productive language to a wider range of + platforms and devices by giving users easy means to configure a + customized language version. + + The approach + + The project will achieve its goals principally by building on the + strengths of the current open source developer community. In + particular, it will potentiate existing volunteer initiatives that are + working on novel implementation techniques, working within the current + informal framework of design consultation, open source code + repositories and periodic coding workshops. The project will connect + this developer community with relevant experts in academia. It will + also make use of the existing non-profit organisation of Python firms + to bind end users into the design and trialling of the extended Python + implementation. Technically, the project will refine and implement an + innovative approach to language implementation, based on object spaces, + that allows choices such as memory managment models or speed versus memory + tradeoffs to be formulated in a completly modular way. + + Concrete results + + The new Python will maintain the semantics of the current implementation + but will have the following benefits: it will be more easily customised + and extended, it will be more portable, it is expected to be more efficient, + and it will cover more programming paradigms in a way that respects the + simplicity of the underlying language. In addition, the project will + document and refine the existing open source development model in the + Python community. Although targetted principally at Python, most of the + techniques will also be applicable to other high level languages. From jacob at codespeak.net Sun Oct 12 21:52:58 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:52:58 +0200 (MEST) Subject: [pypy-svn] rev 1815 - pypy/trunk/doc/funding Message-ID: <20031012195258.A29E15AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:52:57 2003 New Revision: 1815 Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/FIXME Log: Improved description. Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 21:52:57 2003 @@ -26,7 +26,12 @@ will enable us to build a minimal custom version that suits embedded systems. This embedded version will be validated on existing hardware. -FIXME talk about ChangeMaker and Axis here ? Logilab is willing to participate. +Axis Communications (http://www.axis.com/) of Lund, Sweden has +promised to provide suitable hardware for the validation. Axis is a +world leading company in printer servers and network video products. +Change Maker, who have an ongoing relation with the company will be an +interface between Axis and the Logilab developers who will make the +actual implementation. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc @@ -53,6 +58,6 @@ .. include:: wp-tablebegin.asc **Milestones and Expected Result** - +Demonstration program running on embedded hardware. .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 21:52:57 2003 @@ -91,8 +91,6 @@ Write Milestones and Expected Result B6.7.wp11_embed_in_hardware -FIXME talk about ChangeMaker and Axis here ? -Write Milestones and Expected Result B6.7.wp12_validations From hpk at codespeak.net Sun Oct 12 21:53:08 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 21:53:08 +0200 (MEST) Subject: [pypy-svn] rev 1816 - pypy/trunk/doc/funding Message-ID: <20031012195308.6E3955AD89@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 21:53:06 2003 New Revision: 1816 Modified: pypy/trunk/doc/funding/abstract.asc Log: some tweaks (as suggested by laura) Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 21:53:06 2003 @@ -6,12 +6,12 @@ of the easiest programming languages to learn and is one of the languages in which one can code up a given algorithm the fastest. The project aims to bring this highly productive language to a wider range of - platforms and devices by giving users easy means to configure a + platforms and devices by giving users simple means to configure a customized language version. The approach - The project will achieve its goals principally by building on the + The project will achieve its goals principally by leveraging the strengths of the current open source developer community. In particular, it will potentiate existing volunteer initiatives that are working on novel implementation techniques, working within the current @@ -29,9 +29,9 @@ The new Python will maintain the semantics of the current implementation but will have the following benefits: it will be more easily customised - and extended, it will be more portable, it is expected to be more efficient, - and it will cover more programming paradigms in a way that respects the - simplicity of the underlying language. In addition, the project will - document and refine the existing open source development model in the - Python community. Although targetted principally at Python, most of the - techniques will also be applicable to other high level languages. + and extended, it will be more portable, more efficient, and it will cover + more programming paradigms in a way that respects the simplicity of the + underlying language. In addition, the project will document and refine the + existing open source development model in the Python community. Although + targetted principally at Python, most of the techniques will also be + applicable to other high level languages. From jacob at codespeak.net Sun Oct 12 21:58:26 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 21:58:26 +0200 (MEST) Subject: [pypy-svn] rev 1817 - pypy/trunk/doc/funding Message-ID: <20031012195826.7D7AD5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 21:58:25 2003 New Revision: 1817 Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt pypy/trunk/doc/funding/FIXME Log: Edited description. Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Sun Oct 12 21:58:25 2003 @@ -31,67 +31,39 @@ **Description of work** -- During the whole project, maintain and extend a set of documents - represends the current status of the project, results of - discussions, the planning of new sprints and their status reports, - as well as the preparation of papers for presentation on - various congresses. - -- Send reports of ongoings in the project to the Python Business - Forum (PBF) and the Python - developers list (python-dev at python.org). - -XXX here is the new text from Anna and Alex: - -WP 14 - -Each "sprint", as well as the regular progress of non-sprint development, will -produce technical novelties, some of which may afford immediate use and adoption -of the novel technologies being developed. WP 14 will periodically produce short -reports on the result of "sprints" and other development. Said reports will be -posted to the relevant mailing lists as well as archived on both the PyPy and -the Python Business Forum website for universal availability. - -Python community members will be encouraged to keep current with the project -through the short reports, while community feedback on technical developments -will be gathered on the website and mailing lists to be used by the appropriate -project areas to further enhance the project's development efforts, in true Open -Source spirit. - -In addition to the periodically produced short reports, WP 14 will on occasion -present longer, detailed reports to the Commission, and to scientific committees -advising the Commission on technical issues. Technical papers and talks will be -submitted to scientific conferences which deal with the subject matters covered -by the project. When the advancement of the project warrants it, WP 14 will also -publish "popularization" articles and tutorial materials to help other -practitioners of software development to make practical use of the project's -results. Diagrams and schematics will be provided to illustrate fundamental -concepts, as appropriate to the audience and the subject matter. - -The person in charge of WP 14 will be Alex Martelli, a member of both the core -Python developers and of the Python Business Forum, author of the best-selling -book "Python in a Nutshell", co-editor of the collectively authored "Python -Cookbook", popular for his articles on both printed and online venues, and -technical editor and/or reviewer of most of the Python books published over the -last couple of years. Dr. Martelli has a background of leading multi-cultural -software development teams and providing presentations and reports in various -formats to audiences at all levels of technical expertise. His team will include -members with a diversity of languages and backgrounds, which will prove crucial -in the popularization phase, in particular, which may require authoring, -translation, and presentation in the many different languages of the European -Union. - -XXX TODO: - -- Make a shorter version for here -- move personal stuff into a better place -- extract and use some for the introduction text +Each "sprint", as well as the regular progress of non-sprint +development, will produce technical novelties, some of which may +afford immediate use and adoption of the novel technologies being +developed. WP 14 will periodically produce short reports on the result +of "sprints" and other development. Said reports will be posted to the +relevant mailing lists as well as archived on both the PyPy and the +Python Business Forum website for universal availability. + +Python community members will be encouraged to keep current with the +project through the short reports, while community feedback on +technical developments will be gathered on the website and mailing +lists to be used by the appropriate project areas to further enhance +the project's development efforts, in true Open Source spirit. + +In addition to the periodically produced short reports, WP 14 will on +occasion present longer, detailed reports to the Commission, and to +scientific committees advising the Commission on technical +issues. Technical papers and talks will be submitted to scientific +conferences which deal with the subject matters covered by the +project. When the advancement of the project warrants it, WP 14 will +also publish "popularization" articles and tutorial materials to help +other practitioners of software development to make practical use of +the project's results. Diagrams and schematics will be provided to +illustrate fundamental concepts, as appropriate to the audience and +the subject matter. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** +Detailed list to be determined. + .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 21:58:25 2003 @@ -97,7 +97,6 @@ B6.7.wp y13_integration_config B6.7.wp14_documentation -Description of work needs a rewrite. B7.0_other_issues Review From hpk at codespeak.net Sun Oct 12 22:02:43 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 22:02:43 +0200 (MEST) Subject: [pypy-svn] rev 1818 - pypy/trunk/doc/funding Message-ID: <20031012200243.49C4F5AD89@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 22:02:42 2003 New Revision: 1818 Modified: pypy/trunk/doc/funding/abstract.asc Log: new version after some discussion with laura/samuelle on irc Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 22:02:42 2003 @@ -6,22 +6,20 @@ of the easiest programming languages to learn and is one of the languages in which one can code up a given algorithm the fastest. The project aims to bring this highly productive language to a wider range of - platforms and devices by giving users simple means to configure a + platforms and devices by providing simple means to configure a customized language version. The approach The project will achieve its goals principally by leveraging the - strengths of the current open source developer community. In - particular, it will potentiate existing volunteer initiatives that are - working on novel implementation techniques, working within the current - informal framework of design consultation, open source code - repositories and periodic coding workshops. The project will connect - this developer community with relevant experts in academia. It will - also make use of the existing non-profit organisation of Python firms - to bind end users into the design and trialling of the extended Python - implementation. Technically, the project will refine and implement an - innovative approach to language implementation, based on object spaces, + strengths of open source developer communities. In particular, it will + potentiate innovative volunteer initiatives, working within the informal + framework of design consultation, open source code repositories and agile + coding workshops. The project will connect relevant development and research + experts. It will also make use of the existing non-profit organisation of + Python firms to bind end users into the design and enhancement of the extended + Python implementation. Technically, the project will refine and implement + an innovative approach to language implementation, based on object spaces, that allows choices such as memory managment models or speed versus memory tradeoffs to be formulated in a completly modular way. From pedronis at codespeak.net Sun Oct 12 22:04:42 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:04:42 +0200 (MEST) Subject: [pypy-svn] rev 1819 - pypy/trunk/doc/funding Message-ID: <20031012200442.773675AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:04:41 2003 New Revision: 1819 Added: pypy/trunk/doc/funding/alastair_abstract.asc - copied unchanged from rev 1814, pypy/trunk/doc/funding/alistair_abstract.asc Removed: pypy/trunk/doc/funding/alistair_abstract.asc Log: oops. Deleted: /pypy/trunk/doc/funding/alistair_abstract.asc ============================================================================== --- /pypy/trunk/doc/funding/alistair_abstract.asc Sun Oct 12 22:04:41 2003 +++ (empty file) @@ -1,42 +0,0 @@ - Main goals - - The main goal is to use innovative implementation techniques and - innovative development techniques to produce a better version of the - popular programming language Python. The new Python will maintain the - semantics of the current implementation but will have the following - benefits: it will be more easily customised and extended, it will be - more portable, it is expected to be more efficient, and it will cover - more programming paradigms in a way that respects the simplicity of the - underlying language. In addition, the project will document and refine - the existing open source development model in the Python - community. Although targetted principally at Python, most of the - techniques will also be applicable to other high level languages. - - The approach - - The project will achieve its goals principally by building on the - strengths of the current open source developer community. In - particular, it will potentiate existing volunteer initiatives that are - working on novel implementation techniques, working within the current - informal framework of design consultation, open source code - repositories and periodic coding workshops. The project will connect - this developer community with relevant experts in academia. It will - also make use of the existing non-profit organisation of Python firms - to bind end users into the design and trialling of the extended Python - implementation. Technically, the project will refine and implement an - innovative approach to language implementation, based on object spaces, - that allows implementation techniques to be integrated in a modular - way. - - Concrete results - - Much anecdotal, and some empirical, evidence suggests that Python is - one of the easiest programming languages to learn and is one of the - languages in which one can code up a given algorithm the fastest. For - these reasons, it is particularly popular among those people whose main - competence lies beyond computer science and for whom programming is a - secondary activity, that is to say most of the people on the - planet. The goal of this project is to enable even more people to - program in Python and ensure that more people will never need to learn - any other language than Python. They will, instead, be able to - concentrate on getting their job done. From pedronis at codespeak.net Sun Oct 12 22:05:18 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:05:18 +0200 (MEST) Subject: [pypy-svn] rev 1820 - pypy/trunk/doc/funding Message-ID: <20031012200518.27E3C5AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:05:17 2003 New Revision: 1820 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: oops. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sun Oct 12 22:05:17 2003 @@ -32,7 +32,7 @@ **Proposal abstract:** -.. include:: alistair_abstract.asc +.. include:: alastair_abstract.asc From lac at codespeak.net Sun Oct 12 22:07:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 22:07:44 +0200 (MEST) Subject: [pypy-svn] rev 1821 - pypy/trunk/doc/funding Message-ID: <20031012200744.901795AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 22:07:43 2003 New Revision: 1821 Modified: pypy/trunk/doc/funding/abstract.asc Log: To save oodles of time with people who will come by our IRC channel to say we should call it Free Software, not Open Source. Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 22:07:43 2003 @@ -1,7 +1,7 @@ Main goals The project will research and implement a flexible, configurable and - performant version of Python, a popular opensource programming language. + performant version of Python, a popular Free/Open Source programming language. Much anecdotal, and some empirical, evidence suggests that Python is one of the easiest programming languages to learn and is one of the languages in which one can code up a given algorithm the fastest. The project @@ -12,7 +12,7 @@ The approach The project will achieve its goals principally by leveraging the - strengths of open source developer communities. In particular, it will + strengths of Open Source developer communities. In particular, it will potentiate innovative volunteer initiatives, working within the informal framework of design consultation, open source code repositories and agile coding workshops. The project will connect relevant development and research From tismer at codespeak.net Sun Oct 12 22:09:08 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 22:09:08 +0200 (MEST) Subject: [pypy-svn] rev 1822 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031012200908.50B745AD89@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 22:09:06 2003 New Revision: 1822 Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt pypy/trunk/doc/funding/info_to_wps.py pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: enhanced info_to_wps.py, it does start/duration calculation and is able to merge splitted packages. Jacob, please verify if this is correct so far. New PDF generated as well. Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Sun Oct 12 22:09:06 2003 @@ -3,7 +3,7 @@ .. |title| replace:: Synchronisation with Standard Python .. |wp| replace:: WP03 .. |start| replace:: 0 -.. |p1| replace:: PBF +.. |p1| replace:: USH .. |m1| replace:: 12 .. |p2| replace:: |e| .. |m2| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Sun Oct 12 22:09:06 2003 @@ -3,14 +3,14 @@ .. |title| replace:: The PyPy Translation .. |wp| replace:: WP05 .. |start| replace:: 0 -.. |p1| replace:: PBF -.. |m1| replace:: 3 -.. |p2| replace:: STRAKT -.. |m2| replace:: 18 +.. |p1| replace:: STRAKT +.. |m1| replace:: 18 +.. |p2| replace:: MPI +.. |m2| replace:: 9 .. |p3| replace:: USH .. |m3| replace:: 9 -.. |p4| replace:: MPI -.. |m4| replace:: 9 +.. |p4| replace:: PBF +.. |m4| replace:: 3 .. |p5| replace:: |e| .. |m5| replace:: |e| .. |p6| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Sun Oct 12 22:09:06 2003 @@ -3,9 +3,9 @@ .. |title| replace:: Core Optimizations .. |wp| replace:: WP06 .. |start| replace:: 9 -.. |p1| replace:: MPI +.. |p1| replace:: USH .. |m1| replace:: 15 -.. |p2| replace:: PBF +.. |p2| replace:: MPI .. |m2| replace:: 9 .. |p3| replace:: |e| .. |m3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt Sun Oct 12 22:09:06 2003 @@ -3,12 +3,12 @@ .. |title| replace:: Dynamic Optimizations .. |wp| replace:: WP08 .. |start| replace:: 9 -.. |p1| replace:: PBF -.. |m1| replace:: 9 +.. |p1| replace:: STRAKT +.. |m1| replace:: 18 .. |p2| replace:: MPI .. |m2| replace:: 9 -.. |p3| replace:: STRAKT -.. |m3| replace:: 18 +.. |p3| replace:: PBF +.. |m3| replace:: 9 .. |p4| replace:: |e| .. |m4| replace:: |e| .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Sun Oct 12 22:09:06 2003 @@ -2,7 +2,7 @@ .. |title| replace:: Extend Language with Search and Logic .. |wp| replace:: WP09 -.. |start| replace:: 18 +.. |start| replace:: 9 .. |p1| replace:: DFKI .. |m1| replace:: 15 .. |p2| replace:: Logilab Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sun Oct 12 22:09:06 2003 @@ -2,7 +2,7 @@ .. |title| replace:: Extend Language with Aspects and Contracts .. |wp| replace:: WP10 -.. |start| replace:: 18 +.. |start| replace:: 9 .. |p1| replace:: Logilab .. |m1| replace:: 9 .. |p2| replace:: DFKI Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 22:09:06 2003 @@ -2,7 +2,7 @@ .. |title| replace:: Embed in Specialized Hardware .. |wp| replace:: WP11 -.. |start| replace:: 18 +.. |start| replace:: 9 .. |p1| replace:: Logilab .. |m1| replace:: 9 .. |p2| replace:: CM Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Sun Oct 12 22:09:06 2003 @@ -3,10 +3,10 @@ .. |title| replace:: Integration and Configuration .. |wp| replace:: WP13 .. |start| replace:: 18 -.. |p1| replace:: PBF -.. |m1| replace:: 6 -.. |p2| replace:: MPI -.. |m2| replace:: 12 +.. |p1| replace:: MPI +.. |m1| replace:: 12 +.. |p2| replace:: PBF +.. |m2| replace:: 6 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/info_to_wps.py ============================================================================== --- pypy/trunk/doc/funding/info_to_wps.py (original) +++ pypy/trunk/doc/funding/info_to_wps.py Sun Oct 12 22:09:06 2003 @@ -6,26 +6,67 @@ import xml.sax import mkxref -class MyHandler(xml.sax.ContentHandler): - - def __init__(self): - self.in_wp = False - self.current_wp = "" - self.buffer = "" +class Task: + def __init__(self, id, container): + self.id = id + self.title = "no title" + self.children = [] self.constraints = [] self.parties = {} self.duration = 0 - self.result_set = {} + self.dur_calculated = False + self.container = container + self.buffer = "" + if container: + container.append(self) + self.start = 0 + self.start_calculated = False + + def append(self, child): + self.children.append(child) + + def remove(self, child): + self.children.remove(child) + + def calc_duration(self): + if not self.dur_calculated: + durs = [child.calc_duration() for child in self.children] + if not durs: + dur = 0 + else: + dur = max(durs) + self.duration = max(dur, self.duration) + self.dur_calculated = True + return self.duration + + def get_constraints(self): + # merge with container constraints + co = self.constraints[:] + task = self.container + while task: + co.extend(task.constraints) + task = task.container + return co + + def calc_start(self): + if not self.start_calculated: + all = all_dict(self) + co = [all[tn] for tn in self.get_constraints() if tn in all] + ends = [t.calc_start() + t.calc_duration() for t in co] + self.start = max(ends+[self.start]) + self.start_calculated = True + return self.start + +class MyHandler(xml.sax.ContentHandler): + + def __init__(self): + self.current = Task("project", None) xml.sax.ContentHandler.__init__(self) def startElement(self, name, attrs): if name == "task": id = attrs["id"] - if id[:2].lower() == "wp": - self.in_wp = True - self.current_wp = "WP%02d" % int(id[2:]) - self.constraints = [] - self.parties = {} + self.current = Task(id, self.current) return if name == "use-resource": idref = attrs["idref"] @@ -37,34 +78,28 @@ #permonth = cost / self.duration # opps, we don't want this, but toal! #print cost, usage, self.duration, permonth - self.parties[party] = self.parties.get(party, 0) + task = self.current + task.parties[party] = task.parties.get(party, 0) #self.parties[party] += permonth - self.parties[party] += cost + task.parties[party] += cost def endElement(self, name): if name == "task": - if not self.in_wp: - return - #print name, self.constraints, self.parties - self.result_set[self.current_wp] = self.title, self.constraints, self.parties - self.in_wp = False + self.current = self.current.container return if name == "constraint": # we are after constraint and have the buffer - wp = self.buffer.strip().upper() - if wp[:2] == "WP": - if len(wp) < 4: - wp = "WP0" + wp[2:] - self.constraints.append(wp) + wp = self.current.buffer.strip() + self.current.constraints.append(wp) return if name == "duration": - self.duration = int(self.buffer.strip()) + self.current.duration = int(self.current.buffer.strip()) return if name == "label": - self.title = self.buffer.split("-", 1)[-1].strip() + self.current.title = self.current.buffer.split("-", 1)[-1].strip() def characters(self, content): - self.buffer = content + self.current.buffer = content template = """\ .. |title| replace:: |e| @@ -84,7 +119,7 @@ .. |m6| replace:: |e| """ -def edit_wp_text(s, wp, title, constraints, parties): +def edit_wp_text(s, wp, title, start, parties): pre, rest = s.split(".. |title|") ign, post = rest.split(".. |m6| replace:: |e|") pre = pre.strip()+"\n\n" @@ -92,11 +127,7 @@ t = template t = t.replace("|e|", title, 1) t = t.replace("|e|", wp, 1) - if constraints: - start = ", ".join(constraints) - else: - start = "0" - t = t.replace("|e|", start, 1) + t = t.replace("|e|", str(start), 1) # trick: use negative dur for sorting rev = [ (-dur, name) for name, dur in parties.iteritems() ] rev.sort() @@ -109,15 +140,90 @@ durtext = durt2 t = t.replace("|e|", durtext, 1) return pre + t + post - + +def print_tree(task, lev=0): + indent = " " * (lev+lev+1) + self = task + print indent, self.id, self.title + print indent, "Duration", self.duration + print indent, "Parties", self.parties + print indent, "Constraints", self.constraints + print indent, "Start", self.calc_start() + for child in self.children: + print_tree(child, lev+1) + print indent, self.id, "END" + +def all_dict(task): + while task.container: + task = task.container + root = task + res = {root.id: root} + todo = root.children[:] + while todo: + next = todo.pop(0) + res[next.id] = next + todo.extend(next.children) + return res + +# special hack for wp 6 +def merge_task(task): + # merge a task with its direct dependency + # must be a leaf + # both with the same parent + if len(task.constraints) != 1: + raise ValueError, "merge must have exactly one contraint" + all = all_dict(task) + other = all[task.constraints[0]] + if task.container != other.container: + raise ValueError, "merged tasks must have the same container" + if task.children or other.children: + raise ValueError, "cannot merge with children" + # now we extend other's duration and add parties + other.duration += task.duration + for party, dur in task.parties.iteritems(): + dur += other.parties.get(party, 0) + other.parties[party] = dur + # remove ourself + task.container.remove(task) + +def merge_dotted_tasks(root): + all = all_dict(root) + groups = {} + for id in all.keys(): + if len(id.split(".")) == 2: + wp, subid = id.split(".") + groups[wp] = groups.get(wp, []) + groups[wp].append(int(subid)) + # now merge groups + for group, subs in groups.items(): + # work backwards + subs.reverse() + # merge all but first + last = subs.pop() + for num in subs: + id = "%s.%d" % (group, num) + merge_task(all[id]) + # assign new name + id = "%s.%d" % (group, last) + all[id].id = group + f = file('project_planning.xml', 'r') handler = MyHandler() xml.sax.parse(f, handler) -result = handler.result_set + +result = handler.current + +merge_dotted_tasks(result) +result.calc_duration() +#print_tree(result) + +all = all_dict(result) + for wp, fname in mkxref.get_wps_from_dir().iteritems(): - title, constraints, parties = result[wp] + id = "wp%d" % int(wp[2:]) + task = all[id] txt = file(fname).read() - newtxt = edit_wp_text(txt, wp, title, constraints, parties) + newtxt = edit_wp_text(txt, wp, task.title, task.calc_start(), task.parties) if newtxt != txt: print "writing", wp file(fname, "w").write(newtxt) Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From lac at codespeak.net Sun Oct 12 22:18:05 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 22:18:05 +0200 (MEST) Subject: [pypy-svn] rev 1823 - pypy/trunk/doc/funding Message-ID: <20031012201805.98DD55AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 22:18:04 2003 New Revision: 1823 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: If we stick the Free there, we can take it out below. save words where we need them -- irc channels and in the abstract. :-) Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sun Oct 12 22:18:04 2003 @@ -3,7 +3,7 @@ The full title of the Proposal is 'Pypy: A flexible, modular, self-hosting, next-generation specialising compiler for the - Open Source Programming Language Platform Python'. + Free/Open Source Programming Language Platform Python'. **Proposal acronym:** From pedronis at codespeak.net Sun Oct 12 22:21:10 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:21:10 +0200 (MEST) Subject: [pypy-svn] rev 1824 - pypy/trunk/doc/funding Message-ID: <20031012202110.D23A45AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:21:09 2003 New Revision: 1824 Modified: pypy/trunk/doc/funding/B3.impact.txt (contents, props changed) Log: done some ReST formatting. Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 22:21:09 2003 @@ -82,16 +82,16 @@ project, and hope to see it going forward. The PyPy team includes some of the best minds in the Python community. -Unlike Perl or Tcl, Python is not a "one-implementation" language, and -consequently the formal language specification should have priority -over the behavior of a particular implementation. The PyPy project -will reinforce this idea, and can be useful in sorting out ambiguities -in the specification. It is even possible that PyPy will eventually -serve as an "executable specification" for the language, and the -behavior of one of PyPy's object spaces will be deemed the correct -one. + Unlike Perl or Tcl, Python is not a "one-implementation" language, and + consequently the formal language specification should have priority + over the behavior of a particular implementation. The PyPy project + will reinforce this idea, and can be useful in sorting out ambiguities + in the specification. It is even possible that PyPy will eventually + serve as an "executable specification" for the language, and the + behavior of one of PyPy's object spaces will be deemed the correct + one. ---Guido van Rossum (home page: http://www.python.org/~guido/) + --Guido van Rossum (home page: http://www.python.org/~guido/) In order to do this we will have to do something which is called @@ -108,10 +108,11 @@ we would, obviously, have to submit a Standards Track PEP. The complete details of how to write a PEP are themselves an -Informational PEP -- PEP #1 in fact. A copy of PEP #1 is provided +Informational PEP -- PEP #1 in fact. A copy of PEP #1 [PEP1]_ is provided for convenience in this appendix: - -FIXME include http://www.python.org/peps/pep-0001.html + +.. [PEP1] http://www.python.org/peps/pep-0001.html +.. FIXME grab it for appendix inclusion After circulating through the community, PEPs are reviewed by Guido van Rossum, the language author, and his chosen consultants, who may From hpk at codespeak.net Sun Oct 12 22:23:07 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 22:23:07 +0200 (MEST) Subject: [pypy-svn] rev 1825 - pypy/trunk/doc/funding Message-ID: <20031012202307.C54825AD89@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 22:23:06 2003 New Revision: 1825 Modified: pypy/trunk/doc/funding/abstract.asc Log: new version 1951 chars! please check/comment thoroughly Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 22:23:06 2003 @@ -6,22 +6,20 @@ of the easiest programming languages to learn and is one of the languages in which one can code up a given algorithm the fastest. The project aims to bring this highly productive language to a wider range of - platforms and devices by providing simple means to configure a + platforms and devices by providing simple means to build a highly customized language version. The approach - The project will achieve its goals principally by leveraging the - strengths of Open Source developer communities. In particular, it will - potentiate innovative volunteer initiatives, working within the informal - framework of design consultation, open source code repositories and agile - coding workshops. The project will connect relevant development and research - experts. It will also make use of the existing non-profit organisation of - Python firms to bind end users into the design and enhancement of the extended - Python implementation. Technically, the project will refine and implement - an innovative approach to language implementation, based on object spaces, - that allows choices such as memory managment models or speed versus memory - tradeoffs to be formulated in a completly modular way. + The project will achieve its goals principally by leveraging excellent + research and the strengths of open source developer communities. In particular, + it will potentiate innovative volunteer initiatives, working within the informal + framework of design consultation, experimental research, open source code repositories + and agile coding workshops. It will also make use of the existing non-profit + organisation of Python firms to bind business communities into the rapid development + of an unprecedented runtime environment. Technically, the project will refine + and implement innovative approaches to language implementation, based on object + spaces and abstract interpretation. Concrete results From jacob at codespeak.net Sun Oct 12 22:24:38 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 22:24:38 +0200 (MEST) Subject: [pypy-svn] rev 1826 - pypy/trunk/doc/funding Message-ID: <20031012202438.0B8955AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 22:24:37 2003 New Revision: 1826 Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt pypy/trunk/doc/funding/B7.0_other_issues.txt Log: Minor addition. Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.5_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Sun Oct 12 22:24:37 2003 @@ -43,4 +43,3 @@ WP14_ Project Documentation and Dissemination 24 0 24 Strakt ===== ==================================================== ===== ==== ==== ==== ==== ======== -note: WP11 is the stuff concerning Axis and ChangeMaker. needs to be written \ No newline at end of file Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Sun Oct 12 22:24:37 2003 @@ -70,6 +70,11 @@ movies. This paper describes the course development and the tools developed for the course. +While only 3 out of 14 expected participants in the project are +female, this merely reflects the poor state of gender equality in the +field of programming. Indeed, the ratio in this project is actually +more than twice of what is normal. + [1] Becoming a computer scientist: a report by the ACM committee on the status of women in computing science. Authors: Pearl, Amy; Pollack, Martha E.; Riskin, Eve; Thomas, Becky; Wolf, Elizabeth; Wu, Alice. Journal: Communications of the ACM, Nov. 1990, v33, n11, p47-58. From pedronis at codespeak.net Sun Oct 12 22:25:25 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:25:25 +0200 (MEST) Subject: [pypy-svn] rev 1827 - pypy/trunk/doc/funding Message-ID: <20031012202525.5EC395AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:25:24 2003 New Revision: 1827 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: more ReST tweaking. Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 22:25:24 2003 @@ -76,11 +76,9 @@ Here is the relevant mail from Guido van Rossum -FIXME: what is ReST for indent this and make it stand out some way? - -Having participated in one PyPy Sprint, I am very happy with this -project, and hope to see it going forward. The PyPy team includes -some of the best minds in the Python community. + Having participated in one PyPy Sprint, I am very happy with this + project, and hope to see it going forward. The PyPy team includes + some of the best minds in the Python community. Unlike Perl or Tcl, Python is not a "one-implementation" language, and consequently the formal language specification should have priority @@ -93,7 +91,6 @@ --Guido van Rossum (home page: http://www.python.org/~guido/) - In order to do this we will have to do something which is called 'Submitting a PEP'. A PEP - Python Enhancement Proposal - is a design document providing information to the Python community, or describing @@ -108,12 +105,8 @@ we would, obviously, have to submit a Standards Track PEP. The complete details of how to write a PEP are themselves an -Informational PEP -- PEP #1 in fact. A copy of PEP #1 [PEP1]_ is provided -for convenience in this appendix: +Informational PEP -- PEP #1 [PEP1]_ in fact. -.. [PEP1] http://www.python.org/peps/pep-0001.html -.. FIXME grab it for appendix inclusion - After circulating through the community, PEPs are reviewed by Guido van Rossum, the language author, and his chosen consultants, who may accept or reject a PEP or send it back to the author(s) for revision. @@ -501,9 +494,10 @@ multinational market leader in in-house developed chip technology for network video and print servers. +References: - - +.. [PEP1] http://www.python.org/peps/pep-0001.html +.. FIXME grab it for appendix inclusion From pedronis at codespeak.net Sun Oct 12 22:28:45 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:28:45 +0200 (MEST) Subject: [pypy-svn] rev 1828 - pypy/trunk/doc/funding Message-ID: <20031012202845.9E05D5AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:28:44 2003 New Revision: 1828 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: me again at it Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 22:28:44 2003 @@ -494,8 +494,10 @@ multinational market leader in in-house developed chip technology for network video and print servers. + References: + .. [PEP1] http://www.python.org/peps/pep-0001.html .. FIXME grab it for appendix inclusion @@ -504,3 +506,9 @@ + + + + + + From jacob at codespeak.net Sun Oct 12 22:31:42 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 22:31:42 +0200 (MEST) Subject: [pypy-svn] rev 1829 - pypy/trunk/doc/funding Message-ID: <20031012203142.05A7E5AD89@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 22:31:42 2003 New Revision: 1829 Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Log: Ran info_to_wps Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Sun Oct 12 22:31:42 2003 @@ -1,21 +1,21 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Extend Language with Aspects and Contracts -.. |wp| replace:: WP10 -.. |start| replace:: 9 -.. |p1| replace:: Logilab -.. |m1| replace:: 9 -.. |p2| replace:: DFKI -.. |m2| replace:: 6 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - +.. include:: crossreferences.asc + +.. |title| replace:: Extend Language with Aspects and Contracts +.. |wp| replace:: WP10 +.. |start| replace:: 9 +.. |p1| replace:: Logilab +.. |m1| replace:: 9 +.. |p2| replace:: DFKI +.. |m2| replace:: 6 +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + .. include:: wp-toptable.asc .. include:: wp-tablebegin.asc @@ -64,4 +64,4 @@ **Milestones and Expected Result** -.. include:: wp-tableend.asc +.. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Sun Oct 12 22:31:42 2003 @@ -1,21 +1,21 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Embed in Specialized Hardware -.. |wp| replace:: WP11 -.. |start| replace:: 9 -.. |p1| replace:: Logilab -.. |m1| replace:: 9 -.. |p2| replace:: CM -.. |m2| replace:: 1 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - +.. include:: crossreferences.asc + +.. |title| replace:: Embed in Specialized Hardware +.. |wp| replace:: WP11 +.. |start| replace:: 9 +.. |p1| replace:: Logilab +.. |m1| replace:: 9 +.. |p2| replace:: CM +.. |m2| replace:: 1 +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + .. include:: wp-toptable.asc .. include:: wp-tablebegin.asc @@ -60,4 +60,4 @@ **Milestones and Expected Result** Demonstration program running on embedded hardware. -.. include:: wp-tableend.asc +.. include:: wp-tableend.asc From pedronis at codespeak.net Sun Oct 12 22:32:26 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:32:26 +0200 (MEST) Subject: [pypy-svn] rev 1830 - pypy/trunk/doc/funding Message-ID: <20031012203226.8B6BB5AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:32:25 2003 New Revision: 1830 Modified: pypy/trunk/doc/funding/endorsements.asc Log: fixed pointless indecision Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Sun Oct 12 22:32:25 2003 @@ -19,7 +19,8 @@ because it promises pragmatic benefits (performance is my personal #1, but there is a lot of other potential). - Martijn Faassen, Infrae Netherlands + Martijn Faassen, + Infrae Netherlands - @@ -27,7 +28,8 @@ as an important step towards advancing the technology behind Python programming language - Stephan Deibel CEO(FIXME? or use President), Archaeopteryx Software, Inc. + Stephan Deibel, CEO + Archaeopteryx Software, Inc. From tismer at codespeak.net Sun Oct 12 22:35:35 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 22:35:35 +0200 (MEST) Subject: [pypy-svn] rev 1831 - pypy/trunk/doc/funding Message-ID: <20031012203535.A16F95AD89@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 22:35:34 2003 New Revision: 1831 Modified: pypy/trunk/doc/funding/info_to_wps.py Log: tiny bug removed. Modified: pypy/trunk/doc/funding/info_to_wps.py ============================================================================== --- pypy/trunk/doc/funding/info_to_wps.py (original) +++ pypy/trunk/doc/funding/info_to_wps.py Sun Oct 12 22:35:34 2003 @@ -197,6 +197,7 @@ # now merge groups for group, subs in groups.items(): # work backwards + subs.sort() subs.reverse() # merge all but first last = subs.pop() From pedronis at codespeak.net Sun Oct 12 22:36:17 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Sun, 12 Oct 2003 22:36:17 +0200 (MEST) Subject: [pypy-svn] rev 1832 - pypy/trunk/doc/funding Message-ID: <20031012203617.6248D5AD89@thoth.codespeak.net> Author: pedronis Date: Sun Oct 12 22:36:16 2003 New Revision: 1832 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: noticed glued words. Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Sun Oct 12 22:36:16 2003 @@ -342,7 +342,7 @@ documentation and information as well as contact with project members will be easy to reach for external interested potential stakeholders -* the PyPyproject will on a regular basis, during sprints, evaluate and +* the PyPy project will on a regular basis, during sprints, evaluate and gather knowledge about the process development and the develoment process and results. Every sixth months the project will go through a project review workshop in which specific emphasis will be put on From lac at codespeak.net Sun Oct 12 22:37:42 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 22:37:42 +0200 (MEST) Subject: [pypy-svn] rev 1833 - pypy/trunk/doc/funding Message-ID: <20031012203742.290565AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 22:37:41 2003 New Revision: 1833 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: use the new abstract Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Sun Oct 12 22:37:41 2003 @@ -32,7 +32,7 @@ **Proposal abstract:** -.. include:: alastair_abstract.asc +.. include:: abstract.asc From lac at codespeak.net Sun Oct 12 22:53:02 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Sun, 12 Oct 2003 22:53:02 +0200 (MEST) Subject: [pypy-svn] rev 1834 - pypy/trunk/doc/funding Message-ID: <20031012205302.27C6C5AD89@thoth.codespeak.net> Author: lac Date: Sun Oct 12 22:53:01 2003 New Revision: 1834 Modified: pypy/trunk/doc/funding/abstract.asc Log: 1988 chars and mentioned Sprints!! WO WO Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 22:53:01 2003 @@ -2,9 +2,9 @@ The project will research and implement a flexible, configurable and performant version of Python, a popular Free/Open Source programming language. - Much anecdotal, and some empirical, evidence suggests that Python is one - of the easiest programming languages to learn and is one of the languages - in which one can code up a given algorithm the fastest. The project + Much anecdotal and some empirical evidence shows that Python is not only one of + the easiest programming languages to learn but also one of the best + suited for rapid program development, and code maintenance. The project aims to bring this highly productive language to a wider range of platforms and devices by providing simple means to build a highly customized language version. @@ -12,22 +12,25 @@ The approach The project will achieve its goals principally by leveraging excellent - research and the strengths of open source developer communities. In particular, + research and the strengths of Open Source developer communities. In particular, it will potentiate innovative volunteer initiatives, working within the informal framework of design consultation, experimental research, open source code repositories - and agile coding workshops. It will also make use of the existing non-profit - organisation of Python firms to bind business communities into the rapid development - of an unprecedented runtime environment. Technically, the project will refine + and agile coding workshops. It will also make use of an existing non-profit + organisation of Python firms to bind business communities into the + design and enhancement of the extended + Python implementation. Technically, the project will refine and implement innovative approaches to language implementation, based on object spaces and abstract interpretation. Concrete results The new Python will maintain the semantics of the current implementation - but will have the following benefits: it will be more easily customised - and extended, it will be more portable, more efficient, and it will cover - more programming paradigms in a way that respects the simplicity of the - underlying language. In addition, the project will document and refine the - existing open source development model in the Python community. Although + but will also be more portable, more easily customised + and extended, it will be more efficient, and it will cover + more programming paradigms in a way that respects the simplicity of the + underlying language. In addition, the project will document and refine + Sprint Driven Development, a novel Open Source software engineering + methodology pioneered in the Python community. + Although targetted principally at Python, most of the techniques will also be applicable to other high level languages. From tismer at codespeak.net Sun Oct 12 23:04:08 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 23:04:08 +0200 (MEST) Subject: [pypy-svn] rev 1835 - pypy/trunk/doc/funding Message-ID: <20031012210408.D9F065AF1E@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 23:04:08 2003 New Revision: 1835 Modified: pypy/trunk/doc/funding/info_to_wps.py Log: cosmetic Modified: pypy/trunk/doc/funding/info_to_wps.py ============================================================================== --- pypy/trunk/doc/funding/info_to_wps.py (original) +++ pypy/trunk/doc/funding/info_to_wps.py Sun Oct 12 23:04:08 2003 @@ -157,8 +157,8 @@ while task.container: task = task.container root = task - res = {root.id: root} - todo = root.children[:] + res = {} + todo = [root] while todo: next = todo.pop(0) res[next.id] = next From jacob at codespeak.net Sun Oct 12 23:15:53 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Sun, 12 Oct 2003 23:15:53 +0200 (MEST) Subject: [pypy-svn] rev 1836 - pypy/trunk/doc/funding Message-ID: <20031012211553.C81565AC49@thoth.codespeak.net> Author: jacob Date: Sun Oct 12 23:15:52 2003 New Revision: 1836 Modified: pypy/trunk/doc/funding/FIXME Log: Remaining stuff Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Sun Oct 12 23:15:52 2003 @@ -53,7 +53,10 @@ Remove garbage Review REVIEWED: hpk + READY FOR REVIEW: FIXME_BEA or FIXME_JACOB please review the section "Risks" +Ok, the section risks looks very good. /Jacob + NOT STARTED: FIXME_ALASTAIR fill in paragraph about WP10 B6.4_gantt From hpk at codespeak.net Sun Oct 12 23:23:07 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 12 Oct 2003 23:23:07 +0200 (MEST) Subject: [pypy-svn] rev 1837 - pypy/trunk/doc/funding Message-ID: <20031012212307.339AE5AC49@thoth.codespeak.net> Author: hpk Date: Sun Oct 12 23:23:06 2003 New Revision: 1837 Modified: pypy/trunk/doc/funding/abstract.asc Log: a new version out of a screen session with laura. mentions sprint-driven development in the approach. still lacking some mention of the impact on embedded systems in europen high-tech etc. Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Sun Oct 12 23:23:06 2003 @@ -2,9 +2,9 @@ The project will research and implement a flexible, configurable and performant version of Python, a popular Free/Open Source programming language. - Much anecdotal and some empirical evidence shows that Python is not only one of - the easiest programming languages to learn but also one of the best - suited for rapid program development, and code maintenance. The project + Much anecdotal, and some empirical, evidence suggests that Python is one + of the easiest programming languages to learn and is one of the languages + in which one can code up a given algorithm the fastest. The project aims to bring this highly productive language to a wider range of platforms and devices by providing simple means to build a highly customized language version. @@ -12,25 +12,23 @@ The approach The project will achieve its goals principally by leveraging excellent - research and the strengths of Open Source developer communities. In particular, - it will potentiate innovative volunteer initiatives, working within the informal - framework of design consultation, experimental research, open source code repositories - and agile coding workshops. It will also make use of an existing non-profit - organisation of Python firms to bind business communities into the - design and enhancement of the extended - Python implementation. Technically, the project will refine - and implement innovative approaches to language implementation, based on object - spaces and abstract interpretation. + research and the strengths of Open Source developer communities. + In particular, it will explore and refine Sprint Driven Development, + an agile rapid development method pioneered by Python communities in + Europe. Sprints accelerate an already productive open development + process by intensifying communication and feedback cycles for programmers + and researchers. This process will also involve an existing non-profit + organisation of Python firms to bind business communities into the rapid + development of a unique runtime environment. Technically, the project + will refine and implement innovative approaches to language implementation, + based on object spaces and abstract interpretation. Concrete results The new Python will maintain the semantics of the current implementation - but will also be more portable, more easily customised - and extended, it will be more efficient, and it will cover - more programming paradigms in a way that respects the simplicity of the - underlying language. In addition, the project will document and refine - Sprint Driven Development, a novel Open Source software engineering - methodology pioneered in the Python community. - Although - targetted principally at Python, most of the techniques will also be - applicable to other high level languages. + but will be more portable, more easily customised and extended, more + efficient, and it will cover more programming paradigms in a way that + respects the simplicity of the underlying language. In addition, the + project will document and refine existing open source development models + in the Python community. Although targetted principally at Python, most + of the techniques will also be applicable to other high level languages. From tismer at codespeak.net Sun Oct 12 23:29:43 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Sun, 12 Oct 2003 23:29:43 +0200 (MEST) Subject: [pypy-svn] rev 1838 - pypy/trunk/doc/funding/makedoc Message-ID: <20031012212943.975EF5AC49@thoth.codespeak.net> Author: tismer Date: Sun Oct 12 23:29:40 2003 New Revision: 1838 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: last PDF build for today. Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From nico at codespeak.net Mon Oct 13 00:58:31 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Mon, 13 Oct 2003 00:58:31 +0200 (MEST) Subject: [pypy-svn] rev 1839 - pypy/trunk/doc/funding Message-ID: <20031012225831.9C0A85AC49@thoth.codespeak.net> Author: nico Date: Mon Oct 13 00:58:30 2003 New Revision: 1839 Modified: pypy/trunk/doc/funding/B4.0_resources.asc pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Log: wrote description for Logilab. wrote "expected results" for wp09-11 Modified: pypy/trunk/doc/funding/B4.0_resources.asc ============================================================================== --- pypy/trunk/doc/funding/B4.0_resources.asc (original) +++ pypy/trunk/doc/funding/B4.0_resources.asc Mon Oct 13 00:58:30 2003 @@ -21,7 +21,7 @@ The consortium and project resources ===================================== -FIXME_NICO FIXME_LAURA FIXME_HOLGER check below information +FIXME_LAURA FIXME_HOLGER check below information **DFKI** @@ -64,9 +64,30 @@ Country: France Contact: Nicolas Chauvat - Skills, Commitment, Resources: advanced computing, artificial intelligence, - applying new techniques to solve industrial clients' problems. XXXFIXME + Skills, Commitment, Resources: + Logilab specializes in the use of Python for advanced computing, artificial + intelligence and knowledge manipulation. Logilab works for large public and + private entities in France and Europe, including Commissariat ? l'Energie + Atomique, Electricit? De France, SNECMA, etc. Logilab was involved in two + IST projects before, ASWAD (free software workflows for public administration) + and KIDDANET (web filtering for kids based on machine learning techniques). + + For over three years, Logilab has been dedicating resources to high-profile + projects such as intelligent agents, natural language processing and + semantic web applications. Several are already available as free software. + + Logilab is commited to free software and has been contributing to the free + software and Python communities since its creation in 2000, in part through + its Logilab.Org website. + + Logilab is currently steadily growing and is expected to reach the size of + 10 people by the end of 2003. Logilab's role in the project as a technical + partner will be to contribute to the implementation of the new interpreter, + port its existing projects (logic and aspect-oriented programming, static + checking, etc.) to the new interpreter using object-spaces and develop for + embedded devices. + +**Interested developers** -interested: tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, -anna ravenscroft, gunter janton, samuele pedroni +tomek meka, christian tismer, michael hudson, tim peters, alex martelli, dinu gherman, anna ravenscroft, gunter janton, samuele pedroni Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Mon Oct 13 00:58:30 2003 @@ -61,6 +61,7 @@ **Milestones and Expected Result** -FIXME write me +- Python interpreter exhibiting logic-programming features, such as + inference and constraint satisfaction. .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Mon Oct 13 00:58:30 2003 @@ -16,52 +16,54 @@ .. |p6| replace:: |e| .. |m6| replace:: |e| -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -Leveraging PyPy flexibility implement aspect-oriented programming, -design-by-contract and advanced static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - - -**Task 1** - -Using the flexible architecture provided by the PyPy interpreter, -we will first reimplement the current aspect-oriented libraries -available from Logilab, to better integrate with the language -and greatly simplify the design and enhance the performance. - -**Task 2** - -This aspect enabled interpreter will be used to offer -design-by-contract facilities as seen in the Eiffel programming -language and the current aspect-oriented library. -This will also allow us to implement advanced static -checking and code correctness checking capabilities, thus furthering -the work done with the pychecker and pylint tools. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy - -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - - +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +Leveraging PyPy flexibility implement aspect-oriented programming, +design-by-contract and advanced static checking capabilities. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + + +**Task 1** + +Using the flexible architecture provided by the PyPy interpreter, +we will first reimplement the current aspect-oriented libraries +available from Logilab, to better integrate with the language +and greatly simplify the design and enhance the performance. + +**Task 2** + +This aspect enabled interpreter will be used to offer +design-by-contract facilities as seen in the Eiffel programming +language and the current aspect-oriented library. +This will also allow us to implement advanced static +checking and code correctness checking capabilities, thus furthering +the work done with the pychecker and pylint tools. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Implementation of aspect-oriented programming + capabilities in PyPy + +- DL??? Implementation of design-by-contract and advanced + static checking capabilities. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + +- Python interpreter exhibiting aspect-oriented programming, + design-by-contract and advanced static checking capabilities. + .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Mon Oct 13 00:58:30 2003 @@ -16,48 +16,49 @@ .. |p6| replace:: |e| .. |m6| replace:: |e| -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -The capacity of this interpreter to be assembled from basic modules -will enable us to build a minimal custom version that suits embedded -systems. This embedded version will be validated on existing hardware. - -Axis Communications (http://www.axis.com/) of Lund, Sweden has -promised to provide suitable hardware for the validation. Axis is a -world leading company in printer servers and network video products. -Change Maker, who have an ongoing relation with the company will be an -interface between Axis and the Logilab developers who will make the -actual implementation. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Coordinate with WP13_ to build a minimal interpreter suitable for -embedding on devices with restricted resources. - -**Task 2** - -Validate interpreter on existing hardware. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Minimal interperter suitable for embedded devices. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** -Demonstration program running on embedded hardware. - +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +The capacity of this interpreter to be assembled from basic modules +will enable us to build a minimal custom version that suits embedded +systems. This embedded version will be validated on existing hardware. + +Axis Communications (http://www.axis.com/) of Lund, Sweden has +promised to provide suitable hardware for the validation. Axis is a +world leading company in printer servers and network video products. +Change Maker, who have an ongoing relation with the company will be an +interface between Axis and the Logilab developers who will make the +actual implementation. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +**Task 1** + +Coordinate with WP13_ to build a minimal interpreter suitable for +embedding on devices with restricted resources. + +**Task 2** + +Validate interpreter on existing hardware. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL??? Minimal interperter suitable for embedded devices. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + +Demonstration program running on embedded hardware. + .. include:: wp-tableend.asc From nico at codespeak.net Mon Oct 13 01:06:29 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Mon, 13 Oct 2003 01:06:29 +0200 (MEST) Subject: [pypy-svn] rev 1840 - pypy/trunk/doc/funding Message-ID: <20031012230629.1315E5AC49@thoth.codespeak.net> Author: nico Date: Mon Oct 13 01:06:29 2003 New Revision: 1840 Modified: pypy/trunk/doc/funding/FIXME pypy/trunk/doc/funding/project_gantt.png Log: regenerated png image. Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Mon Oct 13 01:06:29 2003 @@ -91,7 +91,6 @@ Write Milestones and Expected Result B6.7.wp10_aspects_and_contracts -Write Milestones and Expected Result B6.7.wp11_embed_in_hardware Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From tomek at codespeak.net Mon Oct 13 11:57:32 2003 From: tomek at codespeak.net (tomek at codespeak.net) Date: Mon, 13 Oct 2003 11:57:32 +0200 (MEST) Subject: [pypy-svn] rev 1841 - pypy/trunk/doc/funding Message-ID: <20031013095732.0AB505AC49@thoth.codespeak.net> Author: tomek Date: Mon Oct 13 11:57:31 2003 New Revision: 1841 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: small changes to the about myself Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 11:57:31 2003 @@ -299,7 +299,10 @@ has a strong background about web programming (python, zope, perl), now is working in dai-lab on the Technical University and is reimplementing the parser and compiler for the agent- controling -language JADL. His passions: programming, traveling, philosophy. +language JADL. He also wrote a book in polish about programming +the keyboard, joystick and the mouse. He is the founder and +programmer of the fantasy portal gildia.com. His passions: programming, +traveling, philosophy. Quality of partnership, involvement of users and SMEs ----------------------------------------------------- From hpk at codespeak.net Mon Oct 13 12:07:20 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 13 Oct 2003 12:07:20 +0200 (MEST) Subject: [pypy-svn] rev 1842 - pypy/trunk/doc/funding Message-ID: <20031013100720.727875AC49@thoth.codespeak.net> Author: hpk Date: Mon Oct 13 12:07:19 2003 New Revision: 1842 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: some tweaks, added more conferences, upped the Google-numbers (i googled for python programming and got around 3 million hits, perl programming gives around 5, java around 6 etc.pp.). Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Mon Oct 13 12:07:19 2003 @@ -1,15 +1,14 @@ .. include:: crossreferences.asc -FIXME_LAURA: currently writing this FIXME_NICO FIXME_ALASTAIR : proof-read it FIXME think about where to include Logilab and DFKI references Potential impact --------------------------------------------------------------------------- -The successful execution of the PyPy project will deliver a practical usefull -implementation of a Very-High-Level, Object-Oriented, Open Source programming -language. +The successful execution of the PyPy project will deliver a higly productive +and flexible implementation of a Very-High-Level, Object-Oriented, Open Source +programming language. This will impact software development in several important ways. @@ -74,7 +73,7 @@ programming language. PyPy's ObjectSpaces flexibility will be crucial in distinguishing "accidental" from "designed-in" characteristics. -Here is the relevant mail from Guido van Rossum +Here is the relevant mail from Guido van Rossum:: Having participated in one PyPy Sprint, I am very happy with this project, and hope to see it going forward. The PyPy team includes @@ -368,10 +367,15 @@ to spread information about the ongoing project, its unique process and technological impact: -FIXME: ADD MORE conferences +EuroPython/EuroZope (European Python Conference), +ACM/IFIP/USENIX International Middleware Conference, +OSCON (Open Source Convention), +OOPSLA (Object-Oriented programming, systems, languages and applications) +PyCon (Python Developers conference), +FOSDEM (Free and Open Source Developer European Meeting), +ECOOP (European Conference for Object Oriented Programming) -EuroPython, OSCON, PyCon, FOSDEM (Free and Open Source -Developer European Meeting) +FIXME: add more conferences Exploitation +++++++++++++ @@ -399,11 +403,11 @@ Jacek's counter has more than 43 000 registered users. -Googling for 'python programming' gives 1,540,000 hits. ('Python' gives -ten million, but many of those Pythons are the actual reptiles.) +Googling for 'python programming' gives 3,020,000 hits. ('Python' gives +ten million, but many of those Pythons are probably actual reptiles.) Compared to the most common languages these days, C, C++, Java and -Visual Basic, there is certainly much less 'market penetration', +Visual Basic, there is certainly less 'market penetration', and in some niches, languages such as PHP, Perl and SQL are popular, but Python is vastly bigger than the more obscure languages such as Haskell, OCaml, Smalltalk, ADA, Ruby etc. @@ -416,7 +420,7 @@ available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. -For what its worth, there are about 600,000 http visitors a month to +For what it's worth, there are about 600,000 http visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the language, as opposed to lost souls, looking for python.com, a porn @@ -443,9 +447,9 @@ the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. -175,000. That's a lot of Python users. Writing the language which -they all use will have an enormous impact. Since the PyPy development -team has been in constant contact with the Python community, and its +175,000. That's a lot of Python users. Greatly improving the language +which they all use will have an enormous impact. Since the PyPy development +team is in constant contact with the Python community, and its world-wide leadership, there is no friction or political resistence to PyPy. The individual members of the consortium are among the most well-known and well-respected members of the Python community. We @@ -500,15 +504,3 @@ .. [PEP1] http://www.python.org/peps/pep-0001.html .. FIXME grab it for appendix inclusion - - - - - - - - - - - - From jacob at codespeak.net Mon Oct 13 13:45:29 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 13:45:29 +0200 (MEST) Subject: [pypy-svn] rev 1843 - pypy/trunk/doc/funding Message-ID: <20031013114529.75CA85AC49@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 13:45:28 2003 New Revision: 1843 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: New text for Change Maker Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 13:45:28 2003 @@ -112,8 +112,28 @@ Contact: Beatrice D?ring Change Maker (http://www.changemaker.nu) is an education and -consultant company, working with enjoyable and provoking solutions for -leadership, team building and organisation change. +consultancy firm and we offer services in the areas of +project management, leadership, team building and change management. We +supply courses, workshops and seminars to corporations, schools and +other organisations. + +We offer support for applications and process management to small +companies in recieving financial support from the European Union +program V?xtkraft M?l 3. + +We also tailor educational concepts for the national Qualified +Education committe (KY), aiming at making the process of evaluating +the needs for recruiting personel easier. Examples are companies +working with interactive media and games development. + +We deliver project management and quality evaluation for larger +educational projects. + +Some customers: + +Blekinge Tekniska H?gskola, Socialh?gskolan, Arvika +N?ringslivscentrum, Elmo Leather, Learning Tree International, FSO, +Semcon, Lundsbergs Internatskola,Galaxenis **Max-Planck Institut f?r Infektionsbiologie** From jacob at codespeak.net Mon Oct 13 13:51:45 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 13:51:45 +0200 (MEST) Subject: [pypy-svn] rev 1844 - pypy/trunk/doc/funding Message-ID: <20031013115145.4E8595AC49@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 13:51:44 2003 New Revision: 1844 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Put the new text for Logilab in the right file. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 13:51:44 2003 @@ -85,6 +85,10 @@ controls its own activities but reports to the board in financial matters. +Activities of the PBF include sharing business leads, marketing Python +as a programming platform and assisting in the quality assurance for +the main implementation of the language. + The PBF will form a PyPy SIG with **Holger Krekel** as chairman to handle its involvement in the project. @@ -96,12 +100,30 @@ Country: France Contact: Nicolas Chauvat -Logilab (http://www.logilab.com) is a French young company based in -Paris (France). It supplies solutions and services in advanced -computing. Both services and solutions rely on computing science -fields yet unexploited out of research labs but already industrially -mature. Therefore, Logilab's software and applications use tomorrow -technologies and provide innovating services to the end user. +Logilab (http://www.logilab.com) specializes in the use of Python for +advanced computing, artificial intelligence and knowledge +manipulation. Logilab works for large public and private entities in +France and Europe, including Commissariat ? l'Energie Atomique, +Electricit? De France, SNECMA, etc. Logilab was involved in two IST +projects before, ASWAD (free software workflows for public +administration) and KIDDANET (web filtering for kids based on machine +learning techniques). + +For over three years, Logilab has been dedicating resources to +high-profile projects such as intelligent agents, natural language +processing and semantic web applications. Several are already +available as free software. + +Logilab is commited to free software and has been contributing to the +free software and Python communities since its creation in 2000, in +part through its Logilab.Org website. + +Logilab is currently steadily growing and is expected to reach the +size of 10 people by the end of 2003. Logilab's role in the project as +a technical partner will be to contribute to the implementation of the +new interpreter, port its existing projects (logic and aspect-oriented +programming, static checking, etc.) to the new interpreter using +object-spaces and develop for embedded devices. **Changemaker** From jacob at codespeak.net Mon Oct 13 13:56:29 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 13:56:29 +0200 (MEST) Subject: [pypy-svn] rev 1845 - pypy/trunk/doc/funding Message-ID: <20031013115629.4FEFF5AC49@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 13:56:28 2003 New Revision: 1845 Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Log: Put in Beas new text for WP 11. Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Mon Oct 13 13:56:28 2003 @@ -1,64 +1,69 @@ -.. include:: crossreferences.asc - -.. |title| replace:: Embed in Specialized Hardware -.. |wp| replace:: WP11 -.. |start| replace:: 9 -.. |p1| replace:: Logilab -.. |m1| replace:: 9 -.. |p2| replace:: CM -.. |m2| replace:: 1 -.. |p3| replace:: |e| -.. |m3| replace:: |e| -.. |p4| replace:: |e| -.. |m4| replace:: |e| -.. |p5| replace:: |e| -.. |m5| replace:: |e| -.. |p6| replace:: |e| -.. |m6| replace:: |e| - -.. include:: wp-toptable.asc - -.. include:: wp-tablebegin.asc - -**Objectives** - -The capacity of this interpreter to be assembled from basic modules -will enable us to build a minimal custom version that suits embedded -systems. This embedded version will be validated on existing hardware. - -Axis Communications (http://www.axis.com/) of Lund, Sweden has -promised to provide suitable hardware for the validation. Axis is a -world leading company in printer servers and network video products. -Change Maker, who have an ongoing relation with the company will be an -interface between Axis and the Logilab developers who will make the -actual implementation. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Description of work** - -**Task 1** - -Coordinate with WP13_ to build a minimal interpreter suitable for -embedding on devices with restricted resources. - -**Task 2** - -Validate interpreter on existing hardware. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Deliverables** - -- DL??? Minimal interperter suitable for embedded devices. - -.. include:: wp-tableend.asc -.. include:: wp-tablebegin.asc - -**Milestones and Expected Result** - -Demonstration program running on embedded hardware. - -.. include:: wp-tableend.asc +.. include:: crossreferences.asc + +.. |title| replace:: Embed in Specialized Hardware +.. |wp| replace:: WP11 +.. |start| replace:: 9 +.. |p1| replace:: Logilab +.. |m1| replace:: 9 +.. |p2| replace:: CM +.. |m2| replace:: 1 +.. |p3| replace:: |e| +.. |m3| replace:: |e| +.. |p4| replace:: |e| +.. |m4| replace:: |e| +.. |p5| replace:: |e| +.. |m5| replace:: |e| +.. |p6| replace:: |e| +.. |m6| replace:: |e| + +.. include:: wp-toptable.asc + +.. include:: wp-tablebegin.asc + +**Objectives** + +The capacity of this interpreter to be assembled from basic modules +will enable us to build a minimal custom version that suits embedded +systems. This embedded version will be validated on existing hardware. + +Axis Communications (http://www.axis.com/) of Lund, Sweden has +promised to provide suitable hardware for the validation. Axis is a +world leading company in printer servers and network video products. +Change Maker, who have an ongoing relation with the company will be an +interface between Axis and the Logilab developers who will make the +actual implementation. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Description of work** + +**Task 1** + +Coordinate with WP13 to build a minimal interpreter suitable for embedding +on devices with restricted resources. + +**Task 2** + +Choose hardware from Axis Communication. +Validate interpreter on existing hardware. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Deliverables** + +- DL?? Minimal interpreter suitable for embedded devices. Evaluation + report to Axis Communication on testresults of performance of + minimal interpreter on Axis hardware- DL??? Minimal interperter + suitable for embedded devices. + +.. include:: wp-tableend.asc +.. include:: wp-tablebegin.asc + +**Milestones and Expected Result** + +Demonstration program running on embedded hardware. +Accepted evaluation report from Axis Communication on evaluation results. + +.. include:: wp-tableend.asc From nico at codespeak.net Mon Oct 13 13:57:48 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Mon, 13 Oct 2003 13:57:48 +0200 (MEST) Subject: [pypy-svn] rev 1846 - pypy/trunk/doc/funding Message-ID: <20031013115748.D98355AC49@thoth.codespeak.net> Author: nico Date: Mon Oct 13 13:57:48 2003 New Revision: 1846 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: updated Logilab and my own descriptions Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 13:57:48 2003 @@ -100,30 +100,24 @@ Country: France Contact: Nicolas Chauvat -Logilab (http://www.logilab.com) specializes in the use of Python for -advanced computing, artificial intelligence and knowledge -manipulation. Logilab works for large public and private entities in -France and Europe, including Commissariat ? l'Energie Atomique, -Electricit? De France, SNECMA, etc. Logilab was involved in two IST -projects before, ASWAD (free software workflows for public -administration) and KIDDANET (web filtering for kids based on machine -learning techniques). - -For over three years, Logilab has been dedicating resources to -high-profile projects such as intelligent agents, natural language -processing and semantic web applications. Several are already -available as free software. - -Logilab is commited to free software and has been contributing to the -free software and Python communities since its creation in 2000, in -part through its Logilab.Org website. - -Logilab is currently steadily growing and is expected to reach the -size of 10 people by the end of 2003. Logilab's role in the project as -a technical partner will be to contribute to the implementation of the -new interpreter, port its existing projects (logic and aspect-oriented -programming, static checking, etc.) to the new interpreter using -object-spaces and develop for embedded devices. +Logilab (http://www.logilab.fr/) specializes in the use of Python for advanced +computing, artificial intelligence and knowledge manipulation. Logilab works +for large public and private entities in France and Europe, including +Commissariat ? l'Energie Atomique, Electricit? De France, SNECMA, etc. +Logilab was involved in two IST projects before, ASWAD (free software +workflows for public administration) and KIDDANET (web filtering for kids +based on machine learning techniques). The company has currently seven +full-time employees and is expected to reach the size of ten by the end of +2003. + +For over three years, Logilab has been dedicating resources to high-profile +projects such as intelligent agents, natural language processing and +semantic web applications. Logilab has also been contributing libraries to +the Python languages, namely XML processing, logic and aspect-oriented +programming and static checking. Since Logilab has been committed +to free software from its creation in 2000, most of these projects are +available under a free software licence from the Logilab.Org website. + **Changemaker** @@ -346,6 +340,17 @@ programmer of the fantasy portal gildia.com. His passions: programming, traveling, philosophy. +**Nicolas Chauvat**: He completed his studies of engineering (spec. Robotics) +at Ecole Centrale Paris and computer science (Artificial Intelligence) at +Universit? Paris 6. Worked as a researcher in industrial and academic +laboratories in France and in the USA before founding Logilab in year 2000. +Research work concerned the modelisation of complex distributed electronic +systems as agent communities and human-agent interaction based on +context-awareness capabilities. President and CEO of Logilab. Python user +since 1997. Secretary of the Python Business Forum. Chairman of the +"EuroPython Science Track". + + Quality of partnership, involvement of users and SMEs ----------------------------------------------------- @@ -412,9 +417,10 @@ Logilab +++++++ focuses on constraints and aspect oriented programming and will verify -that Pypy is extensible with specialised language features. +that Pypy is both extensible with specialised language features and +embeddable in small-sized devices with dedicated hardware. -With 6 full time employees, Logilab is an SME representative. +With 7 full time employees, Logilab is an SME representative. Python Business Forum +++++++++++++++++++++ From jacob at codespeak.net Mon Oct 13 14:01:32 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 14:01:32 +0200 (MEST) Subject: [pypy-svn] rev 1847 - pypy/trunk/doc/funding Message-ID: <20031013120132.B129F5AC49@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 14:01:31 2003 New Revision: 1847 Added: pypy/trunk/doc/funding/sprintprocess.gif (contents, props changed) Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Sprintprocess image added. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 14:01:31 2003 @@ -15,29 +15,10 @@ change, when necessary, will be applied throughout the process. To illustrate the focus on development process as well as project focus: -FIXME: This should be a diagram. -Stakeholders; -- EU -- partners -- Python communities etc.etc - + -:: - - Development - process - - Sprint/ Sprint/ Sprint/ Sprint/ Sprint/ - team team team team team +.. image:: sprintprocess.gif - Project process - - Stakeholders; - - - EU - - partners - - Python communities etc.etc - Both the project and the development process are based around critical workshops, so called "sprints" that will take place on a six week cycle Added: pypy/trunk/doc/funding/sprintprocess.gif ============================================================================== Binary file. No diff available. From pedronis at codespeak.net Mon Oct 13 14:10:11 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 14:10:11 +0200 (MEST) Subject: [pypy-svn] rev 1848 - pypy/trunk/doc/funding Message-ID: <20031013121011.35FCD5AC49@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 14:10:10 2003 New Revision: 1848 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: made a comment out of a FIXME so that the produced text is clean. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Mon Oct 13 14:10:10 2003 @@ -141,7 +141,9 @@ To the extent that they will demand programs developed in an Open Source Language, for reasons of transparency, reliability, and national security they will benefit from the existence of PyPy as an -Open Source language choice. FIXME BEA wants to put in an appendix that fits +Open Source language choice. + +.. FIXME BEA wants to put in an appendix that fits Participation of SME's in high-level research +++++++++++++++++++++++++++++++++++++++++++++ From pedronis at codespeak.net Mon Oct 13 14:14:56 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 14:14:56 +0200 (MEST) Subject: [pypy-svn] rev 1849 - pypy/trunk/doc/funding Message-ID: <20031013121456.C47645A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 14:14:55 2003 New Revision: 1849 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: comment out FIXME, resulting in clean text Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Mon Oct 13 14:14:55 2003 @@ -1,7 +1,7 @@ .. include:: crossreferences.asc -FIXME_NICO FIXME_ALASTAIR : proof-read it -FIXME think about where to include Logilab and DFKI references +.. FIXME_NICO FIXME_ALASTAIR : proof-read it +.. FIXME think about where to include Logilab and DFKI references Potential impact --------------------------------------------------------------------------- @@ -352,11 +352,13 @@ updated on project process and development progress. The assistant project manager will be responsible for this. -* FIXME coordinate with Alex on this. The commercial activities need to +* The commercial activities need to be divided into 'techie' 'financial' and 'other' and WP 10 is about making these things. So Project Management can see that it is done, but can only help in making the stuff. +.. FIXME coordinate with Alex on this point. + * to ensure that interested external parties will be able to use knowledge aquired in the PyPyproject we will host two workshops during the project, one after 6 months and the first review workshop and one at the @@ -375,7 +377,7 @@ FOSDEM (Free and Open Source Developer European Meeting), ECOOP (European Conference for Object Oriented Programming) -FIXME: add more conferences +.. FIXME: add more conferences Exploitation +++++++++++++ From hpk at codespeak.net Mon Oct 13 14:20:57 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 13 Oct 2003 14:20:57 +0200 (MEST) Subject: [pypy-svn] rev 1850 - pypy/trunk/doc/funding Message-ID: <20031013122057.540535A442@thoth.codespeak.net> Author: hpk Date: Mon Oct 13 14:20:56 2003 New Revision: 1850 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: nuked mentioning of TU Berlin Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 14:20:56 2003 @@ -548,7 +548,6 @@ - DFKI, Germany - Python Business Forum, International - University of Southampton, UK -- Berlin FIXME Universit?t, Germany - Max Planck Intitut, Germany - AB Strakt, Sweden - Logilab, France From jacob at codespeak.net Mon Oct 13 16:19:07 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 16:19:07 +0200 (MEST) Subject: [pypy-svn] rev 1851 - pypy/trunk/doc/funding Message-ID: <20031013141907.B92F15A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 16:19:06 2003 New Revision: 1851 Added: pypy/trunk/doc/funding/A3_draft.xls (contents, props changed) pypy/trunk/doc/funding/projectstructure_pypy.gif (contents, props changed) Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/project_gantt.png Log: Draft cost schedule. Added Beas second diagram. Added: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 16:19:06 2003 @@ -224,7 +224,8 @@ The management structure will be as follows: - Author: alex Date: Mon Oct 13 16:57:51 2003 New Revision: 1852 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: just reflowing a too-long line Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Mon Oct 13 16:57:51 2003 @@ -14,7 +14,8 @@ ~~~~~~~~~~~~~~~~~~~~~ -The PyPy project can be roughly divided into three phases, the last two of which are somewhat independent from each other: +The PyPy project can be roughly divided into three phases, the last two of +which are somewhat independent from each other: - Phase 1: The core of PyPy itself must first be developed. From alex at codespeak.net Mon Oct 13 17:31:22 2003 From: alex at codespeak.net (alex at codespeak.net) Date: Mon, 13 Oct 2003 17:31:22 +0200 (MEST) Subject: [pypy-svn] rev 1853 - pypy/trunk/doc/funding Message-ID: <20031013153122.4A4225A442@thoth.codespeak.net> Author: alex Date: Mon Oct 13 17:31:21 2003 New Revision: 1853 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: A first proofreading, copyediting, and polishing of about the first half of the document (up to the middle of the point on JIT). Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Mon Oct 13 17:31:21 2003 @@ -14,16 +14,25 @@ ~~~~~~~~~~~~~~~~~~~~~ -The PyPy project can be roughly divided into three phases, the last two of -which are somewhat independent from each other: +The PyPy project can be divided into three phases: - Phase 1: The core of PyPy itself must first be developed. -- Phase 2: This code base can be used as an research/integration platform of choice. +- Phase 2: This code base can be used as an research/integration platform of + choice. - Phase 3: Specific applications can be implemented and disseminated. -Moreover, several project-long infrastructure tasks are of paramount importance. In particular, coordination is assured by the project coordinator in workpackage WP01_, with the help of the management and technical boards, as described in section B5. It involves the collection and monitoring of monthly status reports, reporting to the EU, organising sprints and maintaining an internal web site in collaboration with the maintenance workpackage. +Phase 1 is a prerequisite for Phases 2 and 3; Phases 2 and 3 are reasonably +independent from each other. + +Beyond phase-specific tasks, several project-long infrastructure tasks are of +paramount importance. In particular, coordination is assured by the project +coordinator in workpackage WP01_, with the help of the management and +technical boards, as described in section B5. This workpackage involves +collecting and monitoring monthly status reports, reporting to the EU, +organising sprints, and maintaining an internal web site in collaboration with +the maintenance workpackage. @@ -40,59 +49,169 @@ Phase 1 ------- -The first goal is to develop a reasonably complete Python interpreter written in Python. It must be entierely compatible with the language specification. It consists of the following major parts: - -- A *bytecode compiler,* which translates Python source code into an internal intermediate representation, the *bytecode.* - -- A *bytecode interpreter,* which interprets bytecodes and manages the supporting internal structures (frames, exception tracebacks...). It considers objects as black boxes and delegates all individual operations on them to a library of built-in types, the *Object Space.* - -- An *Object Space,* which captures the semantics of the various types of the language. - -This subdivision is common among interpreter implementations, although we place special emphasis on the library and its separation from the bytecode interpreter. The implementation will closely follow the current reference C implementation (CPython). It is thus expected to be relatively straightforward, changing only a few design decisions (mainly with respect to the Object Space separation of concerns), and changing strictly nothing to the Python language itself. - -This task is done in workpackage WP04_. After the initial development, WP04_ will switch its focus to implementing the number of extension modules written in C that are either standard or widely-used in CPython. (The Python Standard Library is written in a large part in Python already, so that the problem only concerns C extension modules.) For each of these, two strategies can be followed: either the module is translated into a (regular) Python module, or it is written as an extension module of the PyPy interpreter (i.e. in Python too, but at the level of the interpreter.) - -The result so far can only run on top of another Python implementation like CPython. It still has advantages over the existing implementation, in education (as a much more compact, modular and readable piece of code than CPython), and in flexibility (as a basis to plug in alternate Object Spaces, alternate interpreters, or alternate compilers) -- more about it below. - -At this point, to make PyPy stand-alone (and running at a reasonable speed), we must have restricted key areas of the source to be written in a subset of the Python language, a sublanguage (RPython) in which staticness restrictions are enforced. This sublanguage is suitable for analysis and translation into a lower-level language. Its precise definition is a balance between the amount of dynamic desired to write PyPy and the amount of effort we put in the translation tools. - -Note that translation is not a one-shot process; the only source code for PyPy will be in Python or RPython, and translation can be repeated freely as part of a compilation process. - -We are giving translation an innovative emphasis (and thus a whole workpackage, WP05_) in the project. It is not merely an RPython-to-C translator; it is an essential piece towards the flexibility goals. Numerous aspects that were design decisions influencing the whole source code of the current CPython are now merely customizable behaviour of the translator. Indeed, instead of hard-coding such design decisions, we will keep the PyPy source as simple as possible and plug the required knowledge into the translator. For example, the high-level source need not be concerned about memory management issues (garbage collection, reference counting...); this aspect can be "weaved" into the low-level code by the translator. This point is essential for the separation of concerns. It has deep advantages over the classical monolithic approach, ranging from education (the main source base is not encumbered by details) to raw performance (choice of appropriate low-level models based on real-world context-dependent measures and comparisons). Also note its extreme adaptability: instead of generating C code, it is straightforward to target other runtime environments like Java or .NET. By contrast, today's costs of maintaining several evolving implementations (CPython, Jython for Java...) are very high. - -The translation process itself requires some kind of analysis of the RPython code. Among the various ways to perform this analysis we will most probably choose the one based on *abstract interpretation,* as opposed to source-level or bytecode-level analysis: +The first goal is to develop a reasonably complete Python interpreter written +in Python. It must be entierely compatible with the language specification. It +consists of the following major parts: + +- A *bytecode compiler,* which translates Python source code into an internal + intermediate representation, the *bytecode.* + +- A *bytecode interpreter,* which interprets bytecodes and manages the + supporting internal structures (frames, exception tracebacks...). It + considers objects as black boxes and delegates all individual operations on + them to a library of built-in types, the *Object Space.* + +- An *Object Space,* which captures the semantics of the various types of the + language. + +This subdivision is common among interpreter implementations, although we +place special emphasis on the library of built-in types and its separation +from the bytecode interpreter. The implementation will closely follow the +current reference C implementation (CPython). It is thus expected to be +relatively straightforward, varying from CPython only in a few design +decisions (mainly with respect to the Object Space separation of concerns), +and changing strictly nothing in the Python language itself. + +This task is done in workpackage WP04_. After the initial development, WP04_ +will switch its focus to reimplementing the many extension modules written in +C that are either standard or widely-used in CPython. (The Python Standard +Library is already mostly written in Python, so that the problem only concerns +C-coded extension modules.) For each extension module, two strategies can be +followed: either the module is translated into a (regular) Python module, or +it is written as an extension module of the PyPy interpreter (i.e. in Python +too, but at the level of the interpreter.) + +The result of WP04_ up to this point will still only be able to run on top of +another Python implementation, such as CPython. Despite this limitation, it +will still present some advantages over the existing CPython implementation, +in terms of education (being a much more compact, modular and readable piece +of code than CPython) and in terms of flexibility (as a basis into which +experimenters can plug in alternate Object Spaces, alternate interpreters, or +alternate compilers) -- more about this below. + +At this point, to make PyPy stand-alone (and running at a reasonable speed), +we must ensure that key areas of the source have been restricted to be written +in a subset of the Python language, a sublanguage (RPython) in which +staticness restrictions are enforced. This sublanguage is suitable for +analysis and translation into a lower-level language. The sublanguage's +precise definition is a trade-off between the amount of dynamic power desired +to write PyPy and the amount of effort we put in the translation tools. + +Note that translation is not a one-shot process; the only source code for PyPy +will be in Python or RPython, and translation can be repeated freely as part +of a compilation process. + +We are giving translation an innovative emphasis (and thus a whole +workpackage, WP05_) in the project. It is not merely an RPython-to-C +translator; it is an essential part of our flexibility goals. Numerous aspects +that used to be design decisions influencing the whole source code of the +current CPython have by now become merely customizable behaviour of the +translator. Indeed, instead of hard-coding such design decisions, we will +keep the PyPy source as simple as possible, and "plug-in" the required +knowledge into the translator. For example, the high-level source need not be +concerned about memory management issues (garbage collection, reference +counting...); this aspect can be "weaved" into the low-level code by the +translator. This point is essential for the separation of concerns. It has +deep advantages over the classic monolithic approach, ranging from education +(the main source base is not encumbered by details) to raw performance (choice +of appropriate low-level models based on real-world context-dependent measures +and comparisons). Also note this architecture's extreme adaptability: instead +of generating C code, it is straightforward to target other runtime +environments like Java or .NET. By contrast, today's costs of maintaining +several evolving implementations (CPython, Jython for Java...) are very high. + +The translation process itself requires some kind of analysis of the RPython +code. Among the various ways to perform this analysis we will most probably +choose the one based on *abstract interpretation,* as opposed to source-level +or bytecode-level analysis: .. image:: translation.png -The basic idea is to write an alternative "abstract" Object Space which, instead of actually performing any operation between objects, records these operations and traces the control flow. The "abstract" Object Space will be plugged into the existing bytecode interpreter; these two components will then function as an abstract (or symbolic) interpreter in the common sense. The net result is that we can actually analyse RPython source code without writing any code specific to the language (!) given that we already have a bytecode interpreter which is flexible enough to accomodate a non-standard Object Space. In other words, the combination of PyPy and an "abstract" Object Space performs as the front-end of the translator and can be used to translate (for example) the regular PyPy interpreter and its standard Object Space. Note the two different roles of the bytecode interpreter in the diagram above. - -Another notable advantage of this approach is that instead of operating on static source code, it works on the result of loading and initializing the code into the existing CPython interpreter. (Python, unlike more static languages, allows arbitrary computations to be performed while loading modules, e.g. initializing caches or selecting components according to external parameters.) We are thus not restricted to RPython at initialization time, which is important to acheive the configurability goals. +The basic idea is to write an alternative "abstract" Object Space which, +instead of actually performing any operation between objects, records these +operations and traces the control flow. The "abstract" Object Space will be +plugged into the existing bytecode interpreter; these two components, +together, will then function as an abstract (or symbolic) interpreter in the +usual sense of the word. The net result is that we can actually analyse +RPython source code without writing any code specific to the language (!), +given that we already have a bytecode interpreter which is flexible enough to +accomodate a non-standard Object Space. In other words, the combination of +PyPy and an "abstract" Object Space performs as the front-end of the +translator, and can be used to translate (for example) the regular PyPy +interpreter and its standard Object Space. Note the two different roles played +by the bytecode interpreter in the diagram above. + +Another important advantage of this approach is that, instead of operating on +static source code, it works on the result of loading and initializing the +code into the existing CPython interpreter. (Python, unlike more static +languages, allows arbitrary computations to be performed while loading +modules, e.g. initializing caches or selecting components according to +external parameters.) We are thus not restricted to RPython at initialization +time, which is important in order to achieve the configurability goals. Phase 2 ------- -The completion of the first translated stand-alone PyPy interpreter is where the project could potentially branch into a large number of directions. Numerous exciting applications can be foreseen; we will see some of them in more details in Phase 3. +The completion of the first translated stand-alone PyPy interpreter is where +the project could potentially branch into a large number of directions. +Numerous exciting applications can be foreseen; we will examine some of them +in more details in Phase 3. -The Phase 2 is concerned about research and integration of research, based on the extreme flexibility provided by the PyPy platform. +Phase 2 is concerned about research, and integration of research, based on the +extreme flexibility afforded by the PyPy platform. Performance +++++++++++ -Part of Phase 2 focuses essentially on performance issues, which are important in helping to establish a language implementation, and to open the language to a wide range of applications for which it were previously thought to be unsuitable. - -The flexibility in PyPy allows a number of designs to be reconsidered; better yet, it allows different design decisions to coexist. Indeed, most "hard" issues in interpreters have no obvious best solution; they are all depend in complicated ways to the specific details of the runtime environment and on the particular application considered and its possibly evolving context. PyPy will provide a good platform to experiment with and compare empirically several different implementations for many of these issues. For example: - -- The language's core object types can have several implementations with different trade-offs. To experimented with this, we will write a collection of alternatives in the "standard" Object Space implementation and heuristics to select between them. This kind of research effort is common, but PyPy can provide a good platform for real-world comparisons, and to help isolate which particular choices have which effects in an otherwise unchanged environment. Such data is notoriously hard to obtain in monolithic interpreters. This is the focus of WP06_. - -- Similarily, as described above, pervasive design decisions can be experimented with by tailoring the translator. This is the focus of WP07_. - -We will in particular investigate in detail two specific ways to customize the translator: - -- Generating Continuation Passing Style (CPS) low-level code. This makes the advanced notion of continuation available for the programmer; but -- most importantly in our case -- it allows the development, with the help of an appropriate runtime system, to support massive parallelism. Indeed, in almost any OS, native threads are not appropriate for massive usage. Applications (e.g. web servers handling thousands of connections) have to somehow emulate parallelism explicitely. Soft-threads are an ideal target for language integration. This work (also part of WP07_) would consist of exploiting this idea, which has been first tried for Python in the Stackless project. - -- Generating a JIT compiler. Existing work in the Psyco project has shown that it would actually be possible to mostly generate a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: instead of actually performing any operation between two objects, we *generate* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is to translate individual operations to processor instructions, together with a supporting runtime systems. This is defined by WP08_. +Part of Phase 2 focuses essentially on performance issues, which are important +in helping to establish the real-world success of a language implementation, +and may open the language to a wide range of applications for which it was +previously thought to be unsuitable. + +The flexibility in PyPy allows a number of design decisions to be easily +reconsidered; better yet, it allows different design decisions to coexist. +Indeed, most "hard" issues in interpreters have no obvious best solution; they +are all depend in complicated ways on the specific details of the runtime +environment and on the particular application considered and its possibly +evolving context. PyPy will provide a good platform to experiment with, and +compare empirically, several different possible approaches for many of these +issues. For example: + +- The language's core object types can have several implementations with + different trade-offs. To experiment with this, we will write a collection + of alternatives in the "standard" Object Space implementation and heuristics + to select between them. This kind of research effort is common, but PyPy can + provide a good platform for real-world comparisons, and to help isolate + which particular choices have which effects in an otherwise unchanged + environment. Such data is notoriously hard to obtain in monolithic + interpreters. This is the focus of WP06_. + +- Similarily, as described above, pervasive design decisions can be + experimented with by tailoring the translator. This is the focus of WP07_. + +We will in particular investigate in detail two specific ways to customize the +translator: + +- Generating Continuation Passing Style (CPS) low-level code. This makes the + advanced notion of continuation available for the programmer; but -- most + importantly in our case -- it allows the development, with the help of an + appropriate runtime system, to support massive parallelism. Indeed, in + almost any OS, native threads are not appropriate for massive usage. + Applications (e.g. web servers handling thousands of connections) have to + somehow emulate parallelism explicitly. Soft-threads are an ideal target for + language integration. This work (also part of WP07_) consists of exploiting + this idea, which has been first tried for Python in the Stackless project. + +- Generating a JIT compiler. Existing work in the Psyco project has shown that + it would actually be possible to mostly generate a JIT compiler instead of + having to write it from scratch. The basic idea is again abstract + interpretation: instead of actually performing any operation between two + objects, we *generate* machine code that can perform the required operation. + Again, no change to the bytecode interpreter is needed; all we need is to + translate individual operations to processor instructions, together with a + supporting runtime systems. This is defined by WP08_. In dynamic languges, the truth behind JIT compiling is a bit more involved than the above paragraph suggests. All the "standard" operations in Python, including the intuitively simple ones, are actually relatively complex because they depend heavily on the runtime type of the involved objects. This complex code is already written in detail in the "standard" Object Space. Thus the JIT compiler will work by abstract interpretation of RPython code, i.e. abstract interpretation of the interpreter itself (as opposed to user application code). This is similar to the ideas behind the translator, which operates on the RPython source (i.e. the bytecode interpreter and the standard Object Space). We plan to write the dynamic part of the JIT as a plug-in to the translator: instead of generating C code that is the direct translation of PyPy, we will generate C code that itself generates machine code. This extra indirection has large benefits: the operations the JIT need to be taught about are only the ones allowed in RPython. The resulting piece of C code would thus be the JIT-enabled version of PyPy. From tismer at codespeak.net Mon Oct 13 17:52:28 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 17:52:28 +0200 (MEST) Subject: [pypy-svn] rev 1854 - pypy/trunk/doc/funding Message-ID: <20031013155228.89F365A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 17:52:27 2003 New Revision: 1854 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: typo fixed. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 17:52:27 2003 @@ -371,7 +371,7 @@ Max Planck Institut +++++++++++++++++++ will showcase how to apply the results of the project in the research -environment. The insitute currently leverages the speed of development +environment. The institute currently leverages the speed of development with Python but would be able to solve a wider range of problems with a faster version of the language. From hpk at codespeak.net Mon Oct 13 17:54:23 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 13 Oct 2003 17:54:23 +0200 (MEST) Subject: [pypy-svn] rev 1855 - pypy/trunk/doc/funding Message-ID: <20031013155423.3807E5A442@thoth.codespeak.net> Author: hpk Date: Mon Oct 13 17:54:22 2003 New Revision: 1855 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: fixed two FIXMEs, put Samuele to AB Strakt and Christian to PBF (and fixed a type in his name) Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 17:54:22 2003 @@ -251,9 +251,9 @@ Representantives in the technical board: - Armin Rigo, University of Southampton -- Samuele Pedroni, FIXME +- Samuele Pedroni, AB Strakt - Holger Krekel, PBF -- Chritian Tismer, FIXME +- Christian Tismer, PBF Further representatives on the Technical Board will be selected at the outset of the project. They will be appointed by a vote of everyone who has From pedronis at codespeak.net Mon Oct 13 18:03:47 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 18:03:47 +0200 (MEST) Subject: [pypy-svn] rev 1856 - pypy/trunk/doc/funding Message-ID: <20031013160347.61FF15A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 18:03:46 2003 New Revision: 1856 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: sp -> MPI Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 18:03:46 2003 @@ -251,7 +251,7 @@ Representantives in the technical board: - Armin Rigo, University of Southampton -- Samuele Pedroni, AB Strakt +- Samuele Pedroni, MPI - Holger Krekel, PBF - Christian Tismer, PBF From tismer at codespeak.net Mon Oct 13 18:15:32 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 18:15:32 +0200 (MEST) Subject: [pypy-svn] rev 1857 - pypy/trunk/doc/funding Message-ID: <20031013161532.20ABF5A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 18:15:31 2003 New Revision: 1857 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: made all Europe(an) upper case. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Mon Oct 13 18:15:31 2003 @@ -14,7 +14,7 @@ We believe that our new **fluid networked way of rapid software development presents a new paradigm how people can work together**. -This is an efficient countermeasure to the perceived european "weak culture +This is an efficient countermeasure to the perceived European "weak culture of tranferring and exploiting university research results" (SWOT table from 'IST Advisory Group: Software technologies, embedded systems and distributed systems: A European strategy towards an Ambient Intelligent environment'). @@ -39,7 +39,7 @@ language implementation. -A development platform suited for tommorow's european industry +A development platform suited for tommorow's European industry ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ The EU is interested in **software technologies that are reliable, @@ -61,7 +61,7 @@ can only have a positive effect on European competitiveness. -PyPy builds on the most successful language designed in europe +PyPy builds on the most successful language designed in Europe ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Python is the most widely used European-designed computer language. @@ -70,11 +70,11 @@ Computer Science in the Netherlands, it will strenghten our leadership in the area of innovative language design, and increase world-wide awareness of this fact. With funding from the EU we can bring some key -python developers to europe. +python developers to Europe. We believe that PyPy presents a **unique opportunity to bring considerable market- und mind share with respect to development tools -and environments back to europe**. The many individuals and companies +and environments back to Europe**. The many individuals and companies involved with the project are deeply entagled with the opensource community and businesses. Python and PyPy in particular provide a viable alternative to American closed source language monopolies, @@ -83,7 +83,7 @@ European citizens. Working with the strong opensource community to overcome the -european weakness with development platforms obviously builds on the +European weakness with development platforms obviously builds on the strategies as outlined in the SWOT-analysis by the IST workgroup. From pedronis at codespeak.net Mon Oct 13 18:25:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 18:25:30 +0200 (MEST) Subject: [pypy-svn] rev 1858 - pypy/trunk/doc/funding Message-ID: <20031013162530.D862D5A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 18:25:30 2003 New Revision: 1858 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: MPI is a technical partner Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 18:25:30 2003 @@ -155,7 +155,7 @@ :: - Role: Project Management + Role: Technical Partner Country: Germany Contact: Mark Achtman From alex at codespeak.net Mon Oct 13 18:38:48 2003 From: alex at codespeak.net (alex at codespeak.net) Date: Mon, 13 Oct 2003 18:38:48 +0200 (MEST) Subject: [pypy-svn] rev 1859 - pypy/trunk/doc/funding Message-ID: <20031013163848.108CE5A442@thoth.codespeak.net> Author: alex Date: Mon Oct 13 18:38:48 2003 New Revision: 1859 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: first proofread/copyedit/polish is now 80% of the way through (to WP14). Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Mon Oct 13 18:38:48 2003 @@ -213,29 +213,68 @@ translate individual operations to processor instructions, together with a supporting runtime systems. This is defined by WP08_. -In dynamic languges, the truth behind JIT compiling is a bit more involved than the above paragraph suggests. All the "standard" operations in Python, including the intuitively simple ones, are actually relatively complex because they depend heavily on the runtime type of the involved objects. This complex code is already written in detail in the "standard" Object Space. Thus the JIT compiler will work by abstract interpretation of RPython code, i.e. abstract interpretation of the interpreter itself (as opposed to user application code). This is similar to the ideas behind the translator, which operates on the RPython source (i.e. the bytecode interpreter and the standard Object Space). We plan to write the dynamic part of the JIT as a plug-in to the translator: instead of generating C code that is the direct translation of PyPy, we will generate C code that itself generates machine code. This extra indirection has large benefits: the operations the JIT need to be taught about are only the ones allowed in RPython. The resulting piece of C code would thus be the JIT-enabled version of PyPy. +In dynamic languges, the truth behind JIT compiling is a bit more involved +than the above paragraph suggests. All the "standard" operations in Python, +including intuitively simple ones, are in fact relatively complex because +they depend heavily on the runtime type of the objects involved. This complex +code is already written in detail in the "standard" Object Space. Thus the JIT +compiler will work by abstract interpretation of RPython code, i.e. abstract +interpretation of the interpreter itself (as opposed to user application +code). This is similar to the ideas behind the translator, which operates on +the RPython source (i.e. the bytecode interpreter and the standard Object +Space). We plan to write the dynamic part of the JIT as a plug-in to the +translator: instead of generating C code that is the direct translation of +PyPy, we will generate C code that itself generates machine code. This extra +indirection has large benefits: the operations the JIT need to be taught about +are only the ones allowed in RPython. The resulting piece of C code will thus +be the JIT-enabled version of PyPy. Other research aspects ++++++++++++++++++++++ -The other part of Phase 2 focuses on non-performance-oriented research-level aspects. These are the extensions enabled by the flexible division (bytecode compiler, bytecode interpreter, Object Spaces, and translator) enabled in Phase 1. For example, it would be possible to write an interpreter for a completely different language (e.g. Prolog) using the same framework, leveraging the translator and thus obtaining an efficient JIT-enabled implementation with little efforts. (Doing so for the Prolog language has been adopted as an implementation strategy in a current EU-funded project.) - -In the context of the PyPy project, we will not replace the interpreter altogether, but experiment with extensions: - -- involving feedback from the Python community, we will experiment with the proposed language extensions that are deemed worthy by the CPython developers. Numerous PEPs (Python Extension Proposals), for example, need an experimental implementation for testing before they can be accepted or rejected for integration into CPython; not only is PyPy a good platform to test them on, but this would give PyPy an active part in the effort of keeping synchronised with the development of CPython. (The role of WP03_ is to keep track of the ongoing development of the Python language and its CPython implementation, for which we will also look for existing solutions to automate the "passive" part of this effort at least partially.) - -- WP09_ involves the research and development of techniques inspired from logic programming. An inference engine already exists in the python-logic libraries. Successful integration of these concepts, far from regular imperative programming, would provide a validation of the level of flexibility we achieved in Phase 1. It would also provide an essential starting point for WP10_, described below. +The other part of Phase 2 focuses on non-performance-oriented research-level +aspects. These are the extensions enabled by the flexible modularization +(bytecode compiler, bytecode interpreter, Object Spaces, and translator) +enabled in Phase 1. For example, it would be possible to write an interpreter +for a completely different language (e.g. Prolog) using the same framework, +leveraging the translator and thus obtaining an efficient JIT-enabled +implementation with little effort. (Doing so for the Prolog language has been +adopted as an implementation strategy in a current EU-funded project.) + +In the context of the PyPy project, we will not replace the interpreter +altogether, but experiment with extensions: + +- based on feedback from the Python community, we will experiment with the + proposed language extensions that are deemed worthy by the CPython + developers. Numerous PEPs (Python Extension Proposals), for example, need an + experimental implementation for testing before they can be accepted or + rejected for integration into CPython; not only is PyPy a good platform to + test them on, but also, playing this sandbox role will ensure PyPy remains + synchronised with the development of CPython. (The role of WP03_ is to keep + track of the ongoing development of the Python language and its CPython + implementation; as a part of this task, we will also look for existing + solutions to automate the "passive" part of this effort at least partially.) + +- WP09_ involves the research and development of techniques inspired from + logic programming. An inference engine already exists in the python-logic + libraries. Successful integration of these concepts, far from regular + imperative programming, would provide a validation of the level of + flexibility we achieved in Phase 1. It would also provide an essential + starting point for WP10_, described below. Phase 3 ------- -The third phase of the project is to implement selected key applications of the flexibility we have enabled so far. +The third phase of the project is to implement selected key applications of +the flexibility we have enabled so far. -Let us stress again that Phase 3 is not meant to run only after Phase 2, but partly in parallel with it. The core flexibility on top of which we will be building is provided by the PyPy interpreter as described in Phase 1. +Let us stress again that Phase 3 is not meant to run only after Phase 2, but +partly in parallel with it. The core flexibility on top of which we will be +building is provided by the PyPy interpreter as described in Phase 1. -The applications we have selected can be categorized into the following categories: +The applications we have selected can be categorized as follows: - Language-level object models; @@ -243,31 +282,78 @@ - Interpreter adaptations. -This is also where we expect third-parties to build on top of our platform. +Phase 3 is also when we expect third parties to build on top of our platform. Language-level object models ++++++++++++++++++++++++++++ -This is the topic of WP12_. We will integrate with the language itself three middleware features: security, transparent distribution, and persistence. - -**Security** is an important and difficult aspect that requires knowledge and support at a wide number of levels to be effective. Programming languages can help contribute to security at their level. Different object security models are possible: - -- The language can be artificially restricted, with dangerous operations taken out and thus impossible to achieve by interpreted programs. In effect, this amount to building a stripped-down interpreter. - -- Access to some objects can be denied to only some (untrusted) parts of the interpreted program; or access can go though proxies performing some kind of access checks. This is a more flexible solution, but it is more difficult to implement efficiently. Explicit checks for each access consume time. In PyPy this could be implemented as an Object Space checking and delegating operations to another Object Space. - -For comparison, CPython used to implement security-by-absence-of-reference: untrusted parts of a program could supposedly not obtain a reference to a dangerous object. This model, called "RExec", has been recognized as fragile and hard to maintain. It has been removed from CPython. +This is the topic of WP12_. We will integrate with the language itself three +middleware features: security, transparent distribution, and persistence. -In PyPy, one or both of the alternatives previously described can be practically implemented. - -**Transparent distribution** of objects over a network is another middleware feature that would benefit from being implemented at the language level. This is a vast subject which has been studied extensively. There are several implementations already available in Python, with varying degrees of transparence. None however can be fully transparent by definition of the language itself, which allows introspection -- a program using introspection features could thus defeat the delicate mecanisms introduced by a network distribution library. Moreover, such libraries typically impose additional constrains, e.g. are only able to move objects over a network if they are of a class inheriting from a particular class. - -We will study which of these implementations is best suited for being moved into the interpreter itself. These include transparent interfaces to remote objects (CORBA, Java EJB...), transparent distribution of objects, and transparent distribution of processes themselves. For example, a foreseen solution for the CORBA model would be to design a proxying Object Space that delegates operations to a remote CORBA object server over the network, thus hiding the complexities of the underlying protocols. We will also study approaches enabling transparent distributed execution, i.e. in which the Object Space may decide to move not objects or operations, but instead the whole algorithm's bytecode. This enables real transparent distributed execution with applications like fault tolerance (e.g. perform the computations on two machines and compare the results). - -**Persistence** is related to distribution; it is essentially a way to move objects transparently between the persistent storage and the main memory. This subject has already been studied extensively, and there are several implementations already available. - -We are considering at this point ZODB, the Zope Database engine, and PyPerSyst and Prevalence, which are quite complete. Their respective developers have already expressed high interest in PyPy. Indeed, they would benefit from better language integration; they currently put non-natural constrains on the programmer in the form of what he is allowed to do for persistence to actually work transparenty. Typically, it is not possible for a library to detect changes like adding elements to lists, so the list objects cannot be automatically marked as "dirty" (needed to save). This requires language support, and more specifically an extension or proxy Object Space. +**Security** is an important and difficult aspect that requires knowledge and +support at a wide number of levels to be effective. Programming languages can +help contribute to security at their level. Different object security models +are possible: + +- The language can be artificially restricted, with dangerous operations taken + out and thus impossible to achieve by interpreted programs. In effect, this + amount to building a carefully stripped-down interpreter. + +- Access to some objects can be denied to only some (untrusted) parts of the + interpreted program; or access can go though proxies performing some kind of + access checks. This is a more flexible solution, but it is more difficult to + implement efficiently. Explicit checks for each access consume time. In PyPy + this could be implemented as an Object Space checking and delegating + operations to another Object Space. + +For comparison, CPython used to implement security-by-absence-of-reference: +untrusted parts of a program could supposedly not obtain a reference to a +dangerous object. This model, called "RExec", has been recognized as fragile +and hard to maintain. It has been removed from CPython. + +In PyPy, one or both of the alternatives previously described can be +practically implemented. + +**Transparent distribution** of objects over a network is another middleware +feature that would benefit from being implemented at the language level. This +is a vast subject which has been studied extensively. There are several +implementations already available in Python, with varying degrees of +transparence. None however can be fully transparent by definition of the +language itself, which allows introspection -- a program using introspection +features could thus defeat the delicate mecanisms introduced by a network +distribution library. Moreover, such libraries typically impose additional +constrains, e.g. are only able to move objects over a network if they are of a +class inheriting from a particular class. + +We will study which of these implementations is best suited for being moved +into the interpreter itself. These include transparent interfaces to remote +objects (CORBA, Java EJB...), transparent distribution of objects, and +transparent distribution of processes themselves. For example, a foreseen +solution for the CORBA model would be to design a proxying Object Space that +delegates operations to a remote CORBA object server over the network, thus +hiding the complexities of the underlying protocols. We will also study +approaches enabling transparent distributed execution, i.e. in which the +Object Space may decide to move, rather objects or operations, a whole +algorithm's bytecode. Such totally-transparent distributed execution would +support applications such as fault tolerance (e.g. perform a computation on +two machines and compare the results). + +**Persistence** is related to distribution; it is essentially a way to move +objects transparently between the persistent storage and the main memory. This +subject has been studied extensively, and there are several implementations +already available. + +We are considering at this point ZODB, the Zope Database engine, and PyPerSyst +and Prevalence, which are quite complete. Their respective developers have +already expressed high interest in PyPy. Indeed, they would benefit from +better language integration; they currently put non-natural constrains on the +programmer in terms of what he is allowed to do for persistence to actually +work transparenty. Typically, it is not possible for a library to detect +changes such as adding elements to lists, so that list objects cannot be +automatically marked as "dirty" (as needed to ensure they will transparently +be saved when necessary). This requires language support, and more +specifically an extension or proxy Object Space. Language-level extensions @@ -281,25 +367,51 @@ Interpreter adaptations +++++++++++++++++++++++ -The PyPy interpreter as developed in Phases 1 and 2 will be particularly prone to adaptation to extremely various runtime environments, from embedded devices to number-crunching machines. In WP11_ we propose to study to specific case of embedded devices, which are often limited in processor speed and memory size. This either limits the power of software that is implemented for these platforms, or enforces use of low-level approaches like C/C++ or Java. PyPy is especially suited to support such platforms, since it can produce effective and compact code, while retaining the abstraction and ease-of-use of Python. - -Based on the specific needs of these devices, we will experiment with memory- or battery-efficient implementations of all the customizable aspects described in Phase 2. The PyPy code generator will need an extra platform specific support module, as well as interfaces to necessary device drivers. It may make sense to develop a PyPy simulator for the target platform. - -We will use feedback from actual hardware to compare the results obtained. If code space permits we will implement heuristics to switch to the most efficient implementations when these are context- or application-dependent. +The PyPy interpreter as developed in Phases 1 and 2 will be particularly +suitable to be adapted to extremely diverse runtime environments, from +embedded devices to number-crunching machines. In WP11_ we propose to study to +specific case of embedded devices, which are often limited in processor speed +and memory size. This either limits the power of software that is implemented +for these platforms, or enforces use of low-level approaches like C/C++ or +Java. PyPy is especially suited to support such platforms, since it can +produce effective and compact code, while retaining the abstraction and +ease-of-use of Python. + +Based on the specific needs of these devices, we will experiment with memory- +or battery-efficient implementations of all the customizable aspects described +in Phase 2. The PyPy code generator will need an extra platform specific +support module, as well as interfaces to necessary device drivers. It may make +sense to develop a PyPy simulator for the target platform. + +We will use feedback from actual hardware to compare the results obtained. If +code space permits we will implement heuristics to switch to the most +efficient implementations when these are context- or application-dependent. Integration and Configuration +++++++++++++++++++++++++++++ -It is expected that most of the applications described above will still be relatively experimental when the project ends. It is also expected that the extreme flexibility will lead to a potentially large number of different end-user configurations of PyPy. Thus our essential goal, beyond validating our techniques and showing what can be done and how it benefits from integration with the language, is to make this knowledge available and easy-to-use for contributors and third-parties. - -To fulfill the technical aspect of this goal, we will not only release a range of different versions of PyPy with different trade-offs and including more or less of the features developed in Phase 3, but we will also build a complete toolchain to allow programmers to choose from the available features, various implementations, and runtime restrictions and build a custom PyPy version. This is the objective of WP13_. +It is expected that most of the applications described above will still be +relatively experimental when the project ends. It is also expected that the +extreme flexibility will lead to a potentially large number of different +end-user configurations of PyPy. Thus our essential goal, beyond validating +our techniques and showing what can be done and how it benefits from +integration with the language, is to make this knowledge available and +easy-to-use for contributors and third-parties. + +To fulfill the technical aspect of this goal, we will not only release a range +of different versions of PyPy with different trade-offs and including more or +less of the features developed in Phase 3, but we will also build a complete +toolchain to allow programmers to choose from the available features, various +implementations, and runtime restrictions and build a custom PyPy version. +This is the objective of WP13_. Documentation and Dissemination ------------------------------- -The documentational aspect of the dissemination goal is handled by one of the few workpackages that run for the whole duration of the project. +The documentational aspect of the dissemination goal is handled by one of the +few workpackages that run for the whole duration of the project. Each sprint, as well as the regular progress of non-sprint development, will produce technical novelties, some of which may afford immediate use and adoption From anna at codespeak.net Mon Oct 13 18:46:05 2003 From: anna at codespeak.net (anna at codespeak.net) Date: Mon, 13 Oct 2003 18:46:05 +0200 (MEST) Subject: [pypy-svn] rev 1860 - pypy/trunk/doc/funding Message-ID: <20031013164605.621A85A442@thoth.codespeak.net> Author: anna Date: Mon Oct 13 18:46:04 2003 New Revision: 1860 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: Not sure the formatting is happy. I've tried three different editors. Apologies to Holger if you get ugly reST error messages.I fixed some wording, and did general proofing. Anna Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Mon Oct 13 18:46:04 2003 @@ -6,9 +6,9 @@ Potential impact --------------------------------------------------------------------------- -The successful execution of the PyPy project will deliver a higly productive -and flexible implementation of a Very-High-Level, Object-Oriented, Open Source -programming language. +The successful execution of the PyPy project will deliver a highly productive +and flexible implementation of an Object-Oriented, Open Source Very-High-Level +programming language (VHLL). This will impact software development in several important ways. @@ -18,27 +18,28 @@ - The cost of software maintenance will be reduced. - - Reduce barriers to market a product. + - The barriers to marketing a product will be lowered. The development methods of the PyPy project will prove that using Sprints, -pair programming and test driven development, results in : +pair programming and test-driven development results in : - Broader understanding of the code base among developers - Rapid developments from ideas to working code - - Sustainable project progress through unittesting + - Sustainable project progress through unit testing The cost of software development is essentially labor costs, time to -market and costs of software tools. Having a (free) flexible VHLL will -ease the development through the fact that problems are solved closer -to the abstraction level they are formulated. This will greatly -improve the productivity of the individual programmer. - -The most obvious way in which we will have an impact is that we will -produce a version of the language which, being superior to anything which -has gone before, will be extremely well used. To that end, our first +market, and costs of software tools. Having a (free) flexible VHLL means +problems are solved closer to the abstraction level at which they are +formulated, thereby +improving the productivity of the individual programmer. Higher productivity, +obviously, will decrease labor costs and time to market. + +However, the greater impact we expect to have is to produce a version of the +language which, being superior to anything which +has gone before, will be extremely widely used. To that end, our first target group is the existing community of Python/Jython programmers. See the section on Exploitation where this is discussed at length. @@ -46,19 +47,19 @@ +++++++++++++++++++++++++++ There are currently two implementations of Python in common use. The -first one, which we will call CPython, but which is what the world -knows as Python, is a C implementation of the Python Programming +first one, which we will call CPython, (what the world +knows as Python), is a C implementation of the Python Programming language which compiles to its own virtual machine. The second one is Jython, a pure-Python implementation which compiles to the Java -virtual machine. There is no ANSI standard or similar for Python. +virtual machine. There is no ANSI standard (or similar standard) for Python. Right now the de-facto standard for the programming language is 'whatever CPython does'. This is far from ideal, and questions arise, especially from the developers of Jython as to which CPython language -behaviours are essential to the Python language itself, and which are +behaviors are essential to the Python language itself, and which are mere accidents of this particular implementation. For example, the garbage-collection behavior of CPython is implemented -by reference-counting ensuring that an object is finalized as soon as +by reference-counting, which ensures that an object is finalized as soon as the last reference to it goes away. That would be extremely inconvenient (close to impossible) to implement on standard Java Virtual Machines, which have a deliberately under-specified garbage @@ -70,7 +71,7 @@ Guido van Rossum has expressed interest in giving PyPy the status of 'implementation standard' (executable specification) of the Python -programming language. PyPy's ObjectSpaces flexibility will be crucial +programming language. PyPy's Object Space flexibility will be crucial in distinguishing "accidental" from "designed-in" characteristics. Here is the relevant mail from Guido van Rossum:: @@ -114,7 +115,7 @@ project are completed, that PyPy will become the standard reference implementation of the Python language. In other words, our problems are technical, and not political. The political will is already there -to make PyPy the reference langauge. We merely need to create it. +to make PyPy the reference language. We merely need to create it. Strategic impact +++++++++++++++++ @@ -130,14 +131,14 @@ Language, which is faster, more flexible, more extensible, and which gives more control to the individual programmer as to how it is deployed. For instance, you will be able to build a Python -interpreter customised for a very small amount of available memory. +interpreter customized for a very small amount of available memory. Or one with speed enhancements only possible because there is a huge amount of memory available. Or a PyPy interpreter which will be executed on several machines but offer a single distributed computation space and balances the load by moving execution threads around. We can produce Object Spaces which implement Logic Programming, Aspect Oriented Programming and Design By Contract, hot new topics in computer science -research, but which are rarely seen in industry because existing popular +research which are rarely seen in industry because existing popular languages do not support them. An implementation of the language with substantial improvements will @@ -146,52 +147,51 @@ embedded device sectors, where Europe is the acknowledged world leader. People working in such industries have long desired a high level language with a very small footprint. The new innovative -concept of Object Spaces, pioneered by PyPy makes the construction of -tiny Object Spaces, suitable for running on the smallest devices -straight-forward. Indeed, it will be possible for application +concept of Object Spaces, pioneered by PyPy makes possible the +construction of tiny Object Spaces, suitable for running on the +smallest devices. Indeed, it will be possible for application programmers to configure Python runtime environments to suit their particular hardware characteristics -- for instance, a version that runs in a minimal amount of memory, or a version that can exploit a huge amount of memory to achieve the highest performance speed. Python with greater speed will seamlessly improve the offerings of -those European Companies who develop using Python. Moreover, some -companies resist using Python because of its speed. If execution -speed, rather than development speed is of paramont importance to -you, then Python is currently not a very good language choice. A -faster Python would have more appeal. +those European Companies who already develop using Python. Moreover, +some companies resist using Python because of speed concerns. If +execution speed, rather than development speed is of paramount importance, then Python is currently not a very good language choice. A faster Python +would thus have more appeal. Strategic Impact of Open Source ================================ -Open source has now reached an installed application base sufficient to -become widely recognised as a viable business standard, especially in +Open Source has now reached an installed application base sufficient to +become widely recognized as a viable business standard, especially in Europe. This has no doubt been aided by the proprietary alternatives being intellectual properties of large USA based companies and the growing -awareness of the benefits that open source can provide. The European Union, -compromising of heterogeneous distinct regions with different availability +awareness of the benefits that Open Source can provide. The European Union, +comprising heterogeneous distinct regions with different availability of economic resources, is well positioned to take advantage of the open -source momentum. One reason that open source is becoming so appealing is due +source momentum. One reason that Open Source is becoming so appealing is due to its equal suitability for projects based on diverse capital budgets. -Python is an open source, easy to learn, easy to use, programming +Python is an Open Source, easy to learn, easy to use, programming language that is readily accessible to a broad user base, estimated at -175,000 programmers world-wider, ranging from education establishments -through governement to commercial enterprises of all sizes. This -project aims at building upon the inherent strenghts of Python to +175,000 programmers world-wide, ranging from education establishments +through government to commercial enterprises of all sizes. This +project aims at building upon the inherent strengths of Python to ensure its longevity in the commercial and research marketplace. This -will maximise the return of the existing and future capital investment +will maximize the return of the existing and future capital investment in this technology and ensure Python's widespread acceptance as one of -the most cost effective technology platforms available. +the most cost-effective technology platforms available. Potential Impact on the Balance of Trade ======================================== One of the greatest threats to European competitiveness is its dependence upon proprietary closed source software, mostly made -in the United States. This is not only the matter of money being +in the United States. This is not only an issue of money being spent in the United States is money that is not being spent here, although that affects matters as well. There are two more serious -risks. The first is a threat in the present. +risks. The first is a threat in the present. Any company which writes its software in a proprietary, closed source language is dependent upon its software provider. If you have a bug, @@ -205,57 +205,56 @@ supporting Visual Basic 6.0 after the year 2005. All Visual Basic Developers have been told to convert their code to run under Microsoft's new .NET framework. Before that, in 2001, Microsoft -immediately stopped supporting its Visual J++ language platform, meant +suddenly stopped supporting its Visual J++ language platform, meant to be a direct competitor for Java, after settling a lawsuit with Sun Microsystems. No migration path was specified. Microsoft is making these decisions because they make business sense for Microsoft, regardless of the effects on European software developers. Right now Python is the sixth most popular programming language in the -world. Java and Visual Basic, ranked 1 and 2, are closed source +world. Java and Visual Basic (VB), ranked 1 and 2, are closed source proprietary American products. The number one reason that is cited by Java users as to 'why they don't use Python' is that it is too slow. PyPy will fix this. The Visual Basic programmers are in a more -interesting position. Microsoft, in its wisdom, has decided end +interesting position. Microsoft, in its wisdom, has decided to end support of their current platform, Visual Basic 6.0. After the year -2005, they will have to move to Microsoft's .NET. This is a -tremendous opportunity for us. They're angry as anything now, and -tempted to move, not to .NET, but to an Open Source language, just so -that they can have control over their own destiny and indicate their -displeasure with Microsoft at the same time. +2005, these programmers will have to move to Microsoft's .NET. They're +understandably unhappy, and tempted to move, not to .NET, but to an Open +Source language, just so that they can have control over their own destiny +and indicate their displeasure with Microsoft at the same time. -Every Java and VB user that switches to Python does not pay license -fees to Sun or Microsoft and helps the European balance of Trade. +This is a tremendous opportunity for us. Every Java and VB user that +switches to Python does not pay license fees to Sun or Microsoft and helps the European balance of Trade. Of course, all the PBF members are predicting that an improved Python -will improve their sales, both domestic and foreign. The European -dominance of the PBF means that can only improve the trade balance. +will improve their sales, both domestic and foreign. The dominance of +the PBF by European companies means this can only improve Europe's trade balance. European Dimension =================== PyPy is an extremely high-profile project, as is only right since we -intend to capture the estimated 175,000 Python users and make them our +intend to utilize the estimated 175,000 Python users as our user-base. Consequently, it is essential that we have the full support of the International Python community. Our success in that regard was more fully spoken about in B3.1, International Standards, but suffice to say that the only possible dimensions for this project -was 'Europe wide' or 'World Wide'. You could not find the expertise -we needed in one country, and even if you could, you could not attain +is 'Europe wide' or 'World Wide'. We could not find the expertise +needed in a single country, and nor could we attain international acceptance without involving the top members of the -Python community. At a smaller scale, we would only 'fork the -project' -- make a local version which is of limited use, while the -main line project develops along without you. At best we would have a -ghetto. At the worst we would have two hostile camps slinging insults -at each other over which 'was the real Python'. We have missed all of -these problems by carefully making the PyPy project sufficiently -international, by discussing this proposal for nearly a year at +Python community. Working at a smaller (single-country) scale would +only 'fork the project' -- make a local version which is of limited use, while the main line project continued to develop in another direction. +At best we would have a ghetto. At worst, we would have two hostile +camps slinging insults at each other over which 'was the real Python'. + +We have avoided all of these problems by carefully making the PyPy project +sufficiently international, by discussing this proposal for nearly a year at international conferences, and by inviting non-European Python luminaries to our week-long intensive code-writing meetings called -'Sprints'. By producing a prototype in 4 coding Sprints (spread out +'Sprints'. By producing a prototype in four coding Sprints (spread out over half a year) held in locations in Hildesheim, Germany; -Gothenburg, Sweden; Louvain-La-Neuve, Belgium; and Berlin, Germany. -while discussing this all the while on mailing lists and on our +Gothenburg, Sweden; Louvain-La-Neuve, Belgium; and Berlin, Germany, +while discussing the project on mailing lists and on our website, we have made certain that we have the proper dimension for our project to succeed, and become the new reference language for Python. @@ -265,7 +264,7 @@ This is an Open Source Project. Thus complicated issues involving intellectual property simply do not arise. The knowledge produced -by this project, every deliverable, is listed at Dissemination level +by this project, every deliverable, is listed at Dissemination Level Public. We are utterly committed to transparency and open dissemination, and as such will have all of our code available for nightly downloads, our papers freely available on the PyPy websites, and freely available @@ -299,14 +298,14 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Now you know why we selected it. It fits on less than half a page, and -lets anybody do whatever they like with the software. This does tend -to eliminate any controversies. - -Management of this intellectual property consists of sticking a note on -your website, or wherever you keep your sources, and periodically running -a program, especially before software releases, that sticks an ugly -copy of the license at the top of every file that you release. +This license is concise and clearly permits any person obtaining our product to +use it without limitation. The open, clear language removes any chance of +licensing controversy. + +Management of this intellectual property consists of a posting the license on +the website or wherever sourcecode is available, and periodically running +a program, especially before software releases, attaching a copy of the license +at the top of every file released. The only other intellectual property which we will produce are scientific papers, talks, and the like. They will all be freely @@ -315,16 +314,15 @@ copyright to itself. In either case, no management is necessary. The current version of Python is licensed under the Python Software -License. What we intend to do is in no way in conflict with this -license. This is authoritative. Tim Peters, who is a member of the -project is also director of the Python Software Foundation, and -responsible for the Intellectual Property of the existing Python -language. +License. Our project will in no way conflict with this license. This is +authoritative. Tim Peters, a member of the PyPy project, is also director of +the Python Software Foundation, and responsible for the Intellectual Property +of the existing Python language. Dissemination ++++++++++++++ -To succesfully disseminate knowledge from the PyPy project the project +To successfully disseminate knowledge from the PyPy project, the project needs to have good steadfast routines for documenting and interacting with the project. The project management team (project manager and assisting project manager) will be responsible for overseeing @@ -334,33 +332,31 @@ * The key activities in the project and the development process are the "Sprints". These are open forums to which we actively invite members from - both commercial and research oriented organisations to actively + both commercial and research oriented organizations to actively participate -* since PyPy as a project has goal of a high transparancy (see B5) - documentation and information as well as contact with project members - will be easy to reach for external interested potential stakeholders - -* the PyPy project will on a regular basis, during sprints, evaluate and - gather knowledge about the process development and the develoment - process and results. Every sixth months the project will go through a - project review workshop in which specific emphasis will be put on - knowledge trawling and dissemination strategies +* since PyPy as a project has goal of a high transparency (see B5), + documentation and information as well as project member contact information + will be easy to locate for external interested potential stakeholders + +* the PyPy project will gather on a regular basis, during Sprints, knowledge + about the the development process and results. Every six months, the project + will go through a project review workshop in which specific emphasis will be + put on knowledge gathering and dissemination strategies -* a PyPy newsletter will be produced for external organisations/commercial - enterprises that will be sent out after each "sprint", keeping them +* a PyPy newsletter will be produced for external organizations/commercial + enterprises that will be sent out after each Sprint, keeping them updated on project process and development progress. The assistant project manager will be responsible for this. -* The commercial activities need to - be divided into 'techie' 'financial' and 'other' and WP 10 is about - making these things. So Project Management can see that it is done, - but can only help in making the stuff. +* The commercial activities need to be divided into 'techie' 'financial' and + 'other' and WP 10 is about making these things. So Project Management can + see that it is done, but can only help in making the stuff. .. FIXME coordinate with Alex on this point. * to ensure that interested external parties will be able to use knowledge - aquired in the PyPyproject we will host two workshops during the + acquired in the PyPyproject we will host two workshops during the project, one after 6 months and the first review workshop and one at the end of the project in which we actively work with interested parties to analyze potential usage of PyPy process and prototype @@ -382,14 +378,14 @@ Exploitation +++++++++++++ -Our first goal in exploitation will be to make Python the reference -language. Our market, then is all existing Python programmers. +Our first goal in exploitation will be to make PyPy the reference Python +language. Our market, then is all existing Python programmers. _Just how many are we?_ It is always difficult to measure how many people are using a -programming language, but here is one try. Python is generally -ranked the sixth most popular computer language in the world. Only -Java, Visual Basic, C, C++, and Perl are believed to have more users. +programming language. Python is generally ranked the sixth most popular +computer language in the world. Only Java, Visual Basic, C, C++, and Perl are +believed to have more users. The Python FAQ, available at the python language home site of python.org says:: @@ -418,20 +414,19 @@ Python 2.3 downloads in the first 10 days of September. These are the 'bleeding edge' developers, who were interested in the new release of Python first made available at the end of August. At the other end of -the spectrum, there are many more who simply wait for Python to become +the spectrum, there are many more who wait for Python to become available as a Red Hat, or Debian package, or simply use the version of Python that came installed with their machine when they bought it. -For what it's worth, there are about 600,000 http visitors a month to +For what it's worth, there are about 600,000 web visitors a month to python.org. About one third of them are using the documentation, which is a fairly good indicator that they are trying to use the -language, as opposed to lost souls, looking for python.com, a porn -site. Number of unique IP addresses per month is about 350,000 at +language. Number of unique IP addresses per month is about 350,000 at this point, and has been rising steadily from about 250,000 this time last year. -Converting this into an actual estimate of number of users is a bit -hard, since: +Converting this into an actual estimate of number of users is a difficult, +because: 1) One user may use multiple machines (e.g. home & work & cafe) 2) Many sites use a firewall that hides the actual IP (and thus combines @@ -440,26 +435,26 @@ the Documentation page), because they have already downloaded the documentation for local browsing. -It's probably reasonably safe to say there are at least 175,000 active -Python users in the world. At least half of them are in Europe, if +A conservative estimate would be that there are at least 175,000 active +Python users in the world. At least half of them are in Europe, if O'Reilly's sales statistics for their popular books *Learning Python*, *Python in a Nutshell* and *The Python Cookbook* are to be considered -relevant. Speaking of books, sales statistics of *The Essential -Jython* targetted at users of the Python version that compiles to +relevant. Another piece of data, sales statistics of *The Essential +Jython* targeted at users of the Python version that compiles to the Java Virtual Machine indicate that there are at least 10 thousand Jython users worldwide. -175,000. That's a lot of Python users. Greatly improving the language -which they all use will have an enormous impact. Since the PyPy development +175,000. That's a lot of Python users. Greatly improving the language +which they all use will have an enormous impact. Since the PyPy development team is in constant contact with the Python community, and its -world-wide leadership, there is no friction or political resistence to +world-wide leadership, there is no friction or political resistance to PyPy. The individual members of the consortium are among the most well-known and well-respected members of the Python community. We have taken special care to include prominent stakeholders in the existing language from the very beginning, and have constantly invited members of the community to a series of development Sprints whereby we produced a prototype which served as a proof-of-concept. We have also -budgetted for extensive communication and dissemination with this +budgeted for extensive communication and dissemination with this community. Thus when we deliver a working product, they will be ready to adopt it. @@ -475,12 +470,12 @@ to make a greater effort in switching need a greater reason to switch. Fortunately, this is the technical goal of the project. -The current State-of-the-Art, both in Python and in Computer Languages -in general does not best serve the new needs of the creators of +The current State-of-the-Art, both in Python and in programming languages +in general, does not best serve the new needs of the creators of embedded, networked and distributed software sectors. They need a more flexible language which is easier to reduce to its 'bare-bones' for embedding, and which can dynamically reconfigure itself and -optimise execution speed at the interpreter level. Consequently, the +optimize execution speed at the interpreter level. Consequently, the PyPy project is a collaboration between academic researchers and SME software and service providers. The former have the skill and vision to produce a new run-time language architecture for the twenty-first @@ -492,11 +487,11 @@ .. include:: endorsements.asc -The results of the PyPy project are also expected to be taken-up by +The results of the PyPy project are also expected to be utilized by established industrial users. We have expressions of interest from *Bang and Olufsen*, the Danish manufacturer of high-end stereo equipment, *Vodaphone* and *Ericsson* the mobile industrialists, -*Siemens*, the German conglomorate, and *Axis* the Swedish-based +*Siemens*, the German conglomerate, and *Axis* the Swedish-based multinational market leader in in-house developed chip technology for network video and print servers. @@ -506,3 +501,4 @@ .. [PEP1] http://www.python.org/peps/pep-0001.html .. FIXME grab it for appendix inclusion + From jacob at codespeak.net Mon Oct 13 18:54:10 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 18:54:10 +0200 (MEST) Subject: [pypy-svn] rev 1861 - pypy/trunk/doc/funding Message-ID: <20031013165410.7E4A75A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 18:54:09 2003 New Revision: 1861 Modified: pypy/trunk/doc/funding/B0.0_preamble.txt Log: Added Alastairs fax number. Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Mon Oct 13 18:54:09 2003 @@ -49,7 +49,7 @@ Proposal Part B -Date of preparation: October 2004 +Date of preparation: October 2003 A Specific Targeted Research Project for: IST-2002-2.3.2.3 - Open development platforms for software and services @@ -76,15 +76,11 @@ 7 ChangeMaker ChangeMaker ================ ============================================= ======================= -Coordinator name Alastair BURT (FIXME) +Coordinator name Alastair Burt Coordinator organisation name DFKI Coordinator email burt at dfki.de -Coordinator fax FIXME - -FIXME_NICO - -.. put this before the TOC +Coordinator fax +49 681 302 2235 From alex at codespeak.net Mon Oct 13 18:56:31 2003 From: alex at codespeak.net (alex at codespeak.net) Date: Mon, 13 Oct 2003 18:56:31 +0200 (MEST) Subject: [pypy-svn] rev 1862 - pypy/trunk/doc/funding Message-ID: <20031013165631.6CBA15A442@thoth.codespeak.net> Author: alex Date: Mon Oct 13 18:56:30 2003 New Revision: 1862 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: finished first proofreading/copyedit/polish Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Mon Oct 13 18:56:30 2003 @@ -413,40 +413,49 @@ The documentational aspect of the dissemination goal is handled by one of the few workpackages that run for the whole duration of the project. -Each sprint, as well as the regular progress of non-sprint development, will -produce technical novelties, some of which may afford immediate use and adoption -of the novel technologies being developed. We expect all developers and participants -to openly report to and discuss with their appropriate communities. Reports and summaries -will be posted to the relevant mailing lists as well as archived on both the PyPy and -the Python Business Forum website for universal availability. WP14_ is to support -this process at all levels. - -Python community members will be encouraged to keep current and get involved -with the project, while community involvement and feedback on technical -developments will effect design and implementation decisions. Feedback and -suggestions will be gathered on the website and mailing lists to be used by the -appropriate project areas to further enhance the project's development efforts, in true -Open Source spirit. - -In addition to supporting the communication process, WP14_ will on occasion -present longer, detailed reports to the Commission, and to scientific committees -advising the Commission on technical issues. Technical papers and talks will be -submitted to scientific conferences which deal with the subject matters covered -by the project. When the advancement of the project warrants it, WP14_ will also -publish "popularization" articles and tutorial materials to help other -practitioners of software development to make practical use of the project's -results. Diagrams and schematics will be provided to illustrate fundamental -concepts, as appropriate to the audience and the subject matter. +Each sprint, as well as the regular progress of non-sprint development, will +produce technical novelties, some of which may afford immediate use and +adoption of the novel technologies being developed. We expect all developers +and participants to openly report to and discuss with their appropriate +communities. Reports and summaries will be posted to the relevant mailing +lists as well as archived on both the PyPy and the Python Business Forum +website for universal availability. WP14_ is to support this process at all +levels. + +Python community members will be encouraged to keep current and get involved +with the project, while community involvement and feedback on technical +developments will affect design and implementation decisions. Feedback and +suggestions will be gathered on the website and mailing lists and used by the +appropriate project areas to further enhance the project's development +efforts, in true Open Source spirit. + +In addition to supporting the communication process, WP14_ will on occasion +present longer, detailed reports to the Commission, and to scientific +committees advising the Commission on technical issues. Technical papers and +talks will be submitted to scientific conferences which deal with the subject +matters covered by the project. When the advancement of the project warrants +it, WP14_ will also publish "popularization" articles and tutorial materials +to help other practitioners of software development to make practical use of +the project's results. Diagrams and schematics will be provided to illustrate +fundamental concepts, as appropriate to the audience and the subject matter. Management ---------- -PyPy's own development needs an infrastructure that must continuously be kept up-to-date and further developed. The role of WP02_ is decisive in choosing and adopting modern development environments. The main source repository is placed under control of Subversion, a Concurrent Versioning System. This workpackage also includes maintaining and possibly redesigning frameworks for unit-testing -- unit-tests are essential in the development process in sprints. The website makes heavy use of collaborative tools like Wiki pages, a content management system, and issue trackers. +PyPy's own development needs an infrastructure that must continuously be kept +up-to-date and further developed. The role of WP02_ is decisive in choosing +and adopting modern development environments. The main source repository is +placed under control of Subversion, a Concurrent Versioning System. This +workpackage also includes maintaining and possibly redesigning frameworks for +unit-testing -- unit-tests are essential in the development process in +sprints. The website makes heavy use of collaborative tools like Wiki pages, a +content management system, and issue trackers. Other tasks include: -- Subversion maintenance (e.g. notification hooks and pre/post-commit restrictions); +- Subversion maintenance (e.g. notification hooks and pre/post-commit + restrictions); - providing access over http/https and ssh server; @@ -462,9 +471,11 @@ - performing backups for all relevant information/code; -- setting up a mirror repository which is kept up-to-date and which can be used readonly in case of failure of the main repository; +- setting up a mirror repository which is kept up-to-date and which can be + used readonly in case of failure of the main repository; -- taking care of regular repository backups, designing a strict backup policy suitable for the project, and adhering to it. +- taking care of regular repository backups, designing a strict backup policy + suitable for the project, and adhering to it. :DELETE:BEGIN @@ -473,42 +484,93 @@ :DELETE:END -Risks in the Project and Steps to Minimise -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Risks in the Project and Steps to Minimise Them +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The success of the project depends on the success of Phase 1. When the corresponding milestone is reached -- a complete Python interpreter in Python and a translator for it -- the project branches. The Phase 2 and Phase 3 workpackages are not tightly interconnected. So let us first focus on the Phase 1. +The success of the whole project depends on the success of Phase 1. When the +corresponding milestone is reached -- a complete Python interpreter in Python +and a translator for it -- the project will branch. Phase 2 and Phase 3 +workpackages are not tightly interconnected. So we will examine project risks +with our main focus on Phase 1. Phase 1 ------- -The initial design decisions have already been discussed during the young history of the project and its first 4 sprints, and a basic working prototype has already been written as a proof of concept. We thus take for granted that the risks associated with the following decisions are almost non-existent at this point: - -- writing a Python interpreter in Python is not only possible but it is done much faster and easily than in C. - -- following some basic design decisions of CPython (the internals of whom most of us are intimately familiar with) leads to fast development and good results. - -- pluggable Object Spaces do work. Several proof-of-concept Object Spaces have been successfully tried. - -- Object Spaces are really a suitable abstraction for abstract/symbolic interpretation. Control flow of simple functions have been derived using an Object Space. - -Moreover, simple type analysis and generation of low-level code from a low-level representation is common in a variety of contexts, so we don't expect particular problems from there either. - -As a fall-back solution, we are aware of the more common way to do the translator analysis: if the abstract Object Space should fail to scale as expected we will revert to a classical bytecode-based analysis, adapting tools that are already available for this task. We will however pursue the abstract interpretation solution as far as possible because it leads to more language-independence and thus a single place where knowledge about the details of the bytecode needs to be written. +The initial design decisions have already been discussed during the young +history of the project and its first four sprints, and a basic working +prototype has already been written, as a proof of concept. We thus take for +granted that the risks associated with the following decisions are almost +non-existent at this point: + +- writing a Python interpreter in Python is not only possible -- it is, in + proven fact, markedly faster and easier than in C. + +- following some of the basic design decisions of CPython (the internals of + whom most of us are intimately familiar with) leads to fast development and + good results. + +- pluggable Object Spaces do work. Several proof-of-concept Object Spaces have + been successfully tried. + +- Object Spaces are a remarkably suitable abstraction for abstract/symbolic + interpretation. Control flow of simple functions has been derived using an + Object Space. + +Moreover, simple type analysis and generation of low-level code from a +low-level representation is common in a variety of contexts, so we don't +expect any particular problem from that issue either. + +As a fall-back solution, we are aware of the more common way to do the +translator analysis: if the abstract Object Space should fail to scale as +expected, we will revert to classic bytecode-based analysis, adapting tools +that are already available for this task. We will, however, pursue the +abstract interpretation solution as far as possible, because it leads to more +language-independence and particularly to a single place where all knowledge +about the details of the actual bytecode needs to be represented. Phase 2 ------- -The Phase 2 is mainly research-oriented. It is by definition more difficult to predict the involved risks and fall-backs. - -Let us simply note that the performance goals of Phase 2 are backed by the prototypes Stackless and Psyco, whose authors are among the PyPy members. Also note that the described performance goals, while very interesting to widen the application area of the language, are not essential to the other applications we have planned. Phase 1 (including translation) already produces a level of performance that can reasonably be expected to be comparable to the existing CPython interpreter. +Phase 2 is mainly research-oriented. It is by definition more difficult to +predict the involved risks, and fall-back strategies if risks materialize, +for this Phase than for the others. + +However, a risk-mitigating factor is that the performance goals of Phase 2 are +backed by the existing and working prototypes Stackless and Psyco, whose +authors are among the PyPy members. Further, it is also important to note that +the described performance goals, while very interesting and important in order +to widen the application area of the language, are not essential to the other +applications we have planned. Phase 1 (including translation) already produces +a level of performance that can reasonably be expected to be comparable to the +existing CPython interpreter. Phase 3 ------- -Phase 3 consists of a number of independent applications. Consequently, a failure in one of them would almost certainly not influence the others. Of course, appropriate effort has nevertheless been taken to avoid failure in each of the mentionned application: all of them are to some extent already existing as middleware libraries, and people fluent in the corresponding domains generally appreciate the advantages a better language integration would bring. +Phase 3 consists of a number of independent applications. Consequently, a +failure in one of them would almost certainly not influence the others. Of +course, appropriate effort has nevertheless been taken to avoid failure in +each of the mentioned applications: all of them are to some extent already +existing as middleware libraries, and people fluent in the corresponding +domains generally appreciate the advantages a better language integration +would bring. + +The project concludes with an Integration and Configuration workpackage; +should one of the previous applications fail, the final configurable tool will +still be able to integrate the others. The only risk involved there would +involve difficulties (technical or others) to integrate the work done by the +various partners. As a fall-back solution we may have to keep some successful +but hard to integrate applications out of the mainstream full-featured release +or even configuration tool. It is a tendency inherent in open source projects +to sometimes fork, in order to explore alternative possibilities, and later, +when consensus is reached, merge again. We will try to minimize the +corresponding risk (of divergence, i.e., a fork not followed by a later +merge), but we also think that it is inherently very low, as long as the +different applications are kept as non-overlapping as possible. This risk +minimization strategy in application-structuring is already reflected in +the work-packages presented for Phase 3. -The project concludes with an Integration and Configuration workpackage; should one of the previous applications fail, the final configurable tool will still be able to integrate the others. The only risk involved there would involve difficulties (technical or others) to integrate the work done by the various partners. As a fall-back solution we may have to keep some successful but hard to integrate applications out of the mainstream full-featured release or even configuration tool. It is a tendency about open source projects to sometimes fork and later, when concensus is reached, merge again. We will try to minimize the corresponding risk, and think that it is indeed minimal if the different applications can be kept as non-overlapping as possible. From tismer at codespeak.net Mon Oct 13 19:02:10 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 19:02:10 +0200 (MEST) Subject: [pypy-svn] rev 1863 - pypy/trunk/doc/funding/makedoc Message-ID: <20031013170210.F20165A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 19:02:06 2003 New Revision: 1863 Modified: pypy/trunk/doc/funding/makedoc/makedoc.py pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: formatting, new graph types Modified: pypy/trunk/doc/funding/makedoc/makedoc.py ============================================================================== --- pypy/trunk/doc/funding/makedoc/makedoc.py (original) +++ pypy/trunk/doc/funding/makedoc/makedoc.py Mon Oct 13 19:02:06 2003 @@ -168,10 +168,12 @@ tempfile(name, "w").write(file(os.path.join("..", name)).read()) def copy_binfiles(): + endings = ".png .gif".split() for name in os.listdir(".."): - if name.endswith(".png"): - # note that we don't clear these - file(name, "wb").write(file(os.path.join("..", name), "rb").read()) + for ending in endings: + if name.endswith(ending): + # note that we don't clear these + file(name, "wb").write(file(os.path.join("..", name), "rb").read()) def create_oo_doc(): from win32com.client import Dispatch Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From jacob at codespeak.net Mon Oct 13 19:07:00 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 19:07:00 +0200 (MEST) Subject: [pypy-svn] rev 1864 - pypy/trunk/doc/funding Message-ID: <20031013170700.2F4D35A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 19:06:58 2003 New Revision: 1864 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: Removed FIXMEs Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Mon Oct 13 19:06:58 2003 @@ -1,8 +1,5 @@ .. include:: crossreferences.asc -.. FIXME_NICO FIXME_ALASTAIR : proof-read it -.. FIXME think about where to include Logilab and DFKI references - Potential impact --------------------------------------------------------------------------- @@ -156,10 +153,11 @@ huge amount of memory to achieve the highest performance speed. Python with greater speed will seamlessly improve the offerings of -those European Companies who already develop using Python. Moreover, -some companies resist using Python because of speed concerns. If -execution speed, rather than development speed is of paramount importance, then Python is currently not a very good language choice. A faster Python -would thus have more appeal. +those European Companies who already develop using Python. Moreover, +some companies resist using Python because of speed concerns. If +execution speed, rather than development speed is of paramount +importance, then Python is currently not a very good language +choice. A faster Python would thus have more appeal. Strategic Impact of Open Source ================================ @@ -223,29 +221,32 @@ Source language, just so that they can have control over their own destiny and indicate their displeasure with Microsoft at the same time. -This is a tremendous opportunity for us. Every Java and VB user that -switches to Python does not pay license fees to Sun or Microsoft and helps the European balance of Trade. +This is a tremendous opportunity for us. Every Java and VB user that +switches to Python does not pay license fees to Sun or Microsoft and +helps the European balance of Trade. Of course, all the PBF members are predicting that an improved Python will improve their sales, both domestic and foreign. The dominance of -the PBF by European companies means this can only improve Europe's trade balance. +the PBF by European companies means this can only improve Europe's +trade balance. European Dimension =================== PyPy is an extremely high-profile project, as is only right since we -intend to utilize the estimated 175,000 Python users as our -user-base. Consequently, it is essential that we have the full -support of the International Python community. Our success in that -regard was more fully spoken about in B3.1, International Standards, -but suffice to say that the only possible dimensions for this project -is 'Europe wide' or 'World Wide'. We could not find the expertise -needed in a single country, and nor could we attain -international acceptance without involving the top members of the -Python community. Working at a smaller (single-country) scale would -only 'fork the project' -- make a local version which is of limited use, while the main line project continued to develop in another direction. -At best we would have a ghetto. At worst, we would have two hostile -camps slinging insults at each other over which 'was the real Python'. +intend to utilize the estimated 175,000 Python users as our user-base. +Consequently, it is essential that we have the full support of the +International Python community. Our success in that regard was more +fully spoken about in B3.1, International Standards, but suffice to +say that the only possible dimensions for this project is 'Europe +wide' or 'World Wide'. We could not find the expertise needed in a +single country, and nor could we attain international acceptance +without involving the top members of the Python community. Working at +a smaller (single-country) scale would only 'fork the project' -- make +a local version which is of limited use, while the main line project +continued to develop in another direction. At best we would have a +ghetto. At worst, we would have two hostile camps slinging insults at +each other over which 'was the real Python'. We have avoided all of these problems by carefully making the PyPy project sufficiently international, by discussing this proposal for nearly a year at @@ -349,12 +350,6 @@ updated on project process and development progress. The assistant project manager will be responsible for this. -* The commercial activities need to be divided into 'techie' 'financial' and - 'other' and WP 10 is about making these things. So Project Management can - see that it is done, but can only help in making the stuff. - -.. FIXME coordinate with Alex on this point. - * to ensure that interested external parties will be able to use knowledge acquired in the PyPyproject we will host two workshops during the project, one after 6 months and the first review workshop and one at the @@ -373,7 +368,7 @@ FOSDEM (Free and Open Source Developer European Meeting), ECOOP (European Conference for Object Oriented Programming) -.. FIXME: add more conferences +More conferences will be added once the project gets started. Exploitation +++++++++++++ @@ -500,5 +495,5 @@ .. [PEP1] http://www.python.org/peps/pep-0001.html -.. FIXME grab it for appendix inclusion + From jacob at codespeak.net Mon Oct 13 19:08:46 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 19:08:46 +0200 (MEST) Subject: [pypy-svn] rev 1865 - pypy/trunk/doc/funding Message-ID: <20031013170846.581045A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 19:08:45 2003 New Revision: 1865 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: Removed FIXMEs Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Mon Oct 13 19:08:45 2003 @@ -143,8 +143,6 @@ national security they will benefit from the existence of PyPy as an Open Source language choice. -.. FIXME BEA wants to put in an appendix that fits - Participation of SME's in high-level research +++++++++++++++++++++++++++++++++++++++++++++ From jacob at codespeak.net Mon Oct 13 19:11:25 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 19:11:25 +0200 (MEST) Subject: [pypy-svn] rev 1866 - pypy/trunk/doc/funding Message-ID: <20031013171125.5A75F5A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 19:11:23 2003 New Revision: 1866 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Relabelled FIXMEs Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 19:11:23 2003 @@ -597,17 +597,17 @@ ---------------------- Show that the overall financial plan for the project is adequate. -FIXME_LAURA find out what the heck belongs here. Still no answer -FIXME_NICO (get from Gantt?) +FIXME ALASTAIR: Write this section. STREP Project Effort Form ------------------------- -Full duration of project (insert person-months for activities in which -partners are involved) +Full duration of project: 24 months -Project acronym - +Project acronym - PyPy + +FIXME ALASTAIR: Create this section :: From jacob at codespeak.net Mon Oct 13 19:14:32 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 19:14:32 +0200 (MEST) Subject: [pypy-svn] rev 1867 - pypy/trunk/doc/funding Message-ID: <20031013171432.9E8AF5A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 19:14:28 2003 New Revision: 1867 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Relabelled FIXMEs Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Mon Oct 13 19:14:28 2003 @@ -544,7 +544,7 @@ The consortium consists of the following members: -FIXME: More details? Addresses, organisation numbers....? +FIXME ALASTAIR: More details? Addresses, organisation numbers....? - DFKI, Germany - Python Business Forum, International @@ -554,7 +554,7 @@ - Logilab, France - Changemaker, Sweden -(FIXME: Alastair - something we should mention here about the agreement?) +FIXME ALASTAIR: - something we should mention here about the agreement? Management of Knowledge and Intellectual Property -------------------------------------------------- From pedronis at codespeak.net Mon Oct 13 19:15:14 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 19:15:14 +0200 (MEST) Subject: [pypy-svn] rev 1868 - pypy/trunk/doc/funding Message-ID: <20031013171514.3556B5A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 19:15:03 2003 New Revision: 1868 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: primary Scientific objective Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Mon Oct 13 19:15:03 2003 @@ -19,7 +19,14 @@ Our primary Technical objective is to build an open run-time environment for the Open Source Programming language Python. This will facilitate the development and production of networked and distributed - software systems and services, and embedded software. + software systems and services, and embedded software. + + Our primary Scientific objective is to investigate novel + techniques (AOP code generation and abstract interpretation + -based) for the implementation of practical dynamic languages, + breaking the compromise between flexibility, simplicity and + performance trade-offs and expanding the range (small-to-large) + of directly supportable runtime platforms. Our primary Methological objective is to showcase a novel software engineering process, Sprint Driven Development. This is From hpk at codespeak.net Mon Oct 13 19:32:06 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 13 Oct 2003 19:32:06 +0200 (MEST) Subject: [pypy-svn] rev 1869 - pypy/trunk/doc/funding Message-ID: <20031013173206.412AE5A442@thoth.codespeak.net> Author: hpk Date: Mon Oct 13 19:32:03 2003 New Revision: 1869 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: fixed a type (management -> maintenance) at least i think it's a typo. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Mon Oct 13 19:32:03 2003 @@ -440,8 +440,8 @@ fundamental concepts, as appropriate to the audience and the subject matter. -Management ----------- +Maintenance +----------- PyPy's own development needs an infrastructure that must continuously be kept up-to-date and further developed. The role of WP02_ is decisive in choosing From hpk at codespeak.net Mon Oct 13 19:36:42 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 13 Oct 2003 19:36:42 +0200 (MEST) Subject: [pypy-svn] rev 1870 - pypy/trunk/doc/funding Message-ID: <20031013173642.885615A442@thoth.codespeak.net> Author: hpk Date: Mon Oct 13 19:36:39 2003 New Revision: 1870 Added: pypy/trunk/doc/funding/title.txt Log: checked in a proposal for the title page of the B-Proposal part Added: pypy/trunk/doc/funding/title.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/title.txt Mon Oct 13 19:36:39 2003 @@ -0,0 +1,7 @@ +proposed for the title page: + + +(logo) PyPy + + Researching a highly flexible and modular language platform and implementing + it by leveraging the Open Source Python language and community From alastair at codespeak.net Mon Oct 13 19:54:49 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Mon, 13 Oct 2003 19:54:49 +0200 (MEST) Subject: [pypy-svn] rev 1871 - pypy/trunk/doc/funding Message-ID: <20031013175449.DE2685A442@thoth.codespeak.net> Author: alastair Date: Mon Oct 13 19:54:48 2003 New Revision: 1871 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Update of DFKI description, CV for AB Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Mon Oct 13 19:54:48 2003 @@ -9,11 +9,11 @@ Country: Germany Contact: Alastair Burt -Founded in 1988, DFKI (http://www.dfki.de/) today is one of the -contract research institutes in the field of innovative software -technology based on Artificial Intelligence (AI) methods. DFKI is -focusing on the complete cycle of innovation - from world-class basic -research and technology development through leading-edge demonstrators +Founded in 1988, the DFKI (http://www.dfki.de/) today is a +contract research institute in the field of innovative software +technology based on Artificial Intelligence (AI). The DFKI focuses +on the complete cycle of innovation - from world-class basic +research and technology development through leading-edge demonstrator and prototypes to product functions and commercialization. Based in Kaiserslautern and Saarbr?cken, the German Research Center @@ -21,9 +21,10 @@ Excellence" worldwide. An important element of DFKI's mission is to move innovations as -quickly as possible from the lab into the marketplace. Only by -maintaining research projects at the forefront of science DFKI has the -strength to meet its technology transfer goals. +quickly as possible from the lab into the marketplace. A tenet of +the DFKI is that the best way to meets its technology transfer goals +is to maintain a varied portfolio of research projects at the +forefront of science. **AB Strakt** @@ -199,6 +200,21 @@ Description of the participants ---------------------------------- +**Alastair Burt**, a researcher at the German Research Center for Artificial +Intelligence (German Research Center for Artificial Intelligence). He +studied Psychology at the University of Stirling, Scotland and Computing at +Imperial College London. In 1990 he joined the Multiagent System Research +Group at German Research Center for Artificial Intelligence GmbH in +Saarbr?cken in the department of Deduction and Multiagent Systems headed by +Prof. H. J. Siekmann. Since then he has has been involved with wide variety +of research projects centered around the application of multi agent +systems, including participation in several EC projects and taking +responsibility for their coordination. In particular, he was coordinator of +the ASWAD project that developed a Free Software workflow tool for public +administrations across Europe, an innovative use of the Zope and Python +platform. + + **Jacob Hall?n**, born 1958, comes to his position as co-founder and CTO of AB Strakt from being a Technical Manager and international standards expert at the LIBRIS Department of the Royal Library. He was From tismer at codespeak.net Mon Oct 13 19:57:27 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 19:57:27 +0200 (MEST) Subject: [pypy-svn] rev 1872 - pypy/trunk/doc/funding Message-ID: <20031013175727.EB85F5A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 19:57:26 2003 New Revision: 1872 Added: pypy/trunk/doc/funding/py-web1.png (contents, props changed) Modified: pypy/trunk/doc/funding/title.txt Log: added logo -- ok this way? Added: pypy/trunk/doc/funding/py-web1.png ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/title.txt ============================================================================== --- pypy/trunk/doc/funding/title.txt (original) +++ pypy/trunk/doc/funding/title.txt Mon Oct 13 19:57:26 2003 @@ -1,5 +1,6 @@ proposed for the title page: +.. image:: py-web1.png (logo) PyPy From jacob at codespeak.net Mon Oct 13 20:12:32 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Mon, 13 Oct 2003 20:12:32 +0200 (MEST) Subject: [pypy-svn] rev 1873 - pypy/trunk/doc/funding Message-ID: <20031013181232.AC0FA5A442@thoth.codespeak.net> Author: jacob Date: Mon Oct 13 20:12:31 2003 New Revision: 1873 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: New figure from Logilab. Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Mon Oct 13 20:16:29 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 20:16:29 +0200 (MEST) Subject: [pypy-svn] rev 1874 - pypy/trunk/doc/funding Message-ID: <20031013181629.5B89E5A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 20:16:28 2003 New Revision: 1874 Modified: pypy/trunk/doc/funding/title.txt (props changed) Log: setl eol-style for title.txt From pedronis at codespeak.net Mon Oct 13 20:19:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Mon, 13 Oct 2003 20:19:30 +0200 (MEST) Subject: [pypy-svn] rev 1875 - pypy/trunk/doc/funding Message-ID: <20031013181930.AEAAB5A442@thoth.codespeak.net> Author: pedronis Date: Mon Oct 13 20:19:29 2003 New Revision: 1875 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: new full title. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Mon Oct 13 20:19:29 2003 @@ -1,9 +1,9 @@ **Proposal full title:** - The full title of the Proposal is 'Pypy: A flexible, modular, - self-hosting, next-generation specialising compiler for the - Free/Open Source Programming Language Platform Python'. + The full title of the Proposal is 'Pypy: Researching a highly + flexible and modular language platform and implementing it by + leveraging the Open Source Python language and community'. **Proposal acronym:** From tismer at codespeak.net Mon Oct 13 20:59:35 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 20:59:35 +0200 (MEST) Subject: [pypy-svn] rev 1876 - in pypy/trunk/doc/funding: . makedoc Message-ID: <20031013185935.992FF5A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 20:59:33 2003 New Revision: 1876 Modified: pypy/trunk/doc/funding/B0.0_preamble.txt pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: built some PDF with acronym, title, a little table formatting. Modified: pypy/trunk/doc/funding/B0.0_preamble.txt ============================================================================== --- pypy/trunk/doc/funding/B0.0_preamble.txt (original) +++ pypy/trunk/doc/funding/B0.0_preamble.txt Mon Oct 13 20:59:33 2003 @@ -56,7 +56,7 @@ :DELETE:END -List of participants +**List of participants** ================ ============================================= ======================= Participant no. Participant name Participant short name @@ -76,11 +76,19 @@ 7 ChangeMaker ChangeMaker ================ ============================================= ======================= -Coordinator name Alastair Burt +:DELETE:BEGIN -Coordinator organisation name DFKI +following table must be edited to have no borders. -Coordinator email burt at dfki.de +:DELETE:END -Coordinator fax +49 681 302 2235 +==================================== ========================== +**Coordinator name** Alastair Burt +------------------------------------ -------------------------- +**Coordinator organisation name** DFKI +------------------------------------ -------------------------- +**Coordinator email** burt at dfki.de +------------------------------------ -------------------------- +**Coordinator fax** +49 681 302 2235 +==================================== ========================== Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From tismer at codespeak.net Mon Oct 13 21:49:22 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Mon, 13 Oct 2003 21:49:22 +0200 (MEST) Subject: [pypy-svn] rev 1877 - pypy/trunk/doc/funding/makedoc Message-ID: <20031013194922.41BEA5A442@thoth.codespeak.net> Author: tismer Date: Mon Oct 13 21:49:20 2003 New Revision: 1877 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/makedoc/prep_part_b.sxw Log: final PDF for today/nite Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/prep_part_b.sxw ============================================================================== Binary files. No diff available. From nico at codespeak.net Tue Oct 14 00:16:14 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Tue, 14 Oct 2003 00:16:14 +0200 (MEST) Subject: [pypy-svn] rev 1878 - pypy/trunk/doc/funding Message-ID: <20031013221614.217EA5A442@thoth.codespeak.net> Author: nico Date: Tue Oct 14 00:16:12 2003 New Revision: 1878 Modified: pypy/trunk/doc/funding/FIXME Log: added expected result to wp09 Modified: pypy/trunk/doc/funding/FIXME ============================================================================== --- pypy/trunk/doc/funding/FIXME (original) +++ pypy/trunk/doc/funding/FIXME Tue Oct 14 00:16:12 2003 @@ -88,7 +88,6 @@ B6.7.wp08_dynamic_optimisation B6.7.wp09_search_and_logic -Write Milestones and Expected Result B6.7.wp10_aspects_and_contracts From nico at codespeak.net Tue Oct 14 00:20:41 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Tue, 14 Oct 2003 00:20:41 +0200 (MEST) Subject: [pypy-svn] rev 1879 - pypy/trunk/doc/funding Message-ID: <20031013222041.4CE4F5A442@thoth.codespeak.net> Author: nico Date: Tue Oct 14 00:20:40 2003 New Revision: 1879 Modified: pypy/trunk/doc/funding/makefile pypy/trunk/doc/funding/project_gantt.png Log: regenerated gantt image. Modified: pypy/trunk/doc/funding/makefile ============================================================================== --- pypy/trunk/doc/funding/makefile (original) +++ pypy/trunk/doc/funding/makefile Tue Oct 14 00:20:40 2003 @@ -7,5 +7,5 @@ xsltproc nico/p2total.xsl project_planning.xml | python nico/bt.py > budget_summary.html project_gantt.png: project_planning.xml project_resources.xml - pygantt --timestep 56 --display-resources --renderer png --detail 0 --colors-file pyganttrc project_planning.xml > project_gantt.png + pygantt --timestep 84 --display-resources --renderer png --detail 0 --colors-file pyganttrc project_planning.xml > project_gantt.png Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Tue Oct 14 03:03:44 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 03:03:44 +0200 (MEST) Subject: [pypy-svn] rev 1880 - pypy/trunk/doc/funding Message-ID: <20031014010344.05FBA5B081@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 03:03:44 2003 New Revision: 1880 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: typos Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Tue Oct 14 03:03:44 2003 @@ -304,7 +304,7 @@ licensing controversy. Management of this intellectual property consists of a posting the license on -the website or wherever sourcecode is available, and periodically running +the website or wherever source code is available, and periodically running a program, especially before software releases, attaching a copy of the license at the top of every file released. @@ -351,7 +351,7 @@ project manager will be responsible for this. * to ensure that interested external parties will be able to use knowledge - acquired in the PyPyproject we will host two workshops during the + acquired in the PyPy project we will host two workshops during the project, one after 6 months and the first review workshop and one at the end of the project in which we actively work with interested parties to analyze potential usage of PyPy process and prototype From pedronis at codespeak.net Tue Oct 14 03:16:57 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 03:16:57 +0200 (MEST) Subject: [pypy-svn] rev 1881 - pypy/trunk/doc/funding Message-ID: <20031014011657.1E5FC5B081@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 03:16:56 2003 New Revision: 1881 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: typos Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 03:16:56 2003 @@ -117,7 +117,7 @@ the Python languages, namely XML processing, logic and aspect-oriented programming and static checking. Since Logilab has been committed to free software from its creation in 2000, most of these projects are -available under a free software licence from the Logilab.Org website. +available under a free software license from the Logilab.Org website. **Changemaker** @@ -135,12 +135,12 @@ other organisations. We offer support for applications and process management to small -companies in recieving financial support from the European Union +companies in receiving financial support from the European Union program V?xtkraft M?l 3. We also tailor educational concepts for the national Qualified -Education committe (KY), aiming at making the process of evaluating -the needs for recruiting personel easier. Examples are companies +Education committee (KY), aiming at making the process of evaluating +the needs for recruiting personnel easier. Examples are companies working with interactive media and games development. We deliver project management and quality evaluation for larger @@ -182,9 +182,9 @@ WEB-based publication of data within the databases (http://web.mpiib-berlin.mpg.de) will be greatly expanded in the immediate future. The group uses Python extensively for its -bioinformatic analyses, will help in the development of Pypy and will +bioinformatics analyses, will help in the development of Pypy and will act as a test site to evaluate increased performance within its -bioinformatic activities. +bioinformatics activities. Sub-contracting --------------- @@ -247,7 +247,7 @@ laude". He consulted for Volkswagen, large German banks and the chairman of the EU-founded CEN/ISSS workshop who contracted him to prototype integration of OpenSource software. He implemented an -opensource transaction service on top of TAO/CORBA and published +open-source transaction service on top of TAO/CORBA and published several articles about Free projects. In 2001 he joined the Python community, published an interactive tool, took part in Zope3 development and some of the first coding Sprints in Europe and became @@ -270,7 +270,7 @@ **Alex Martelli**: Best-selling author of *Python in a Nutshell*. Co-editor of *Python Cookbook* . ActiveState 2002 -"Activators' Choice" award. PSF member, Python langauge developer, PBF +"Activators' Choice" award. PSF member, Python language developer, PBF board member. Currently works for AB Strakt, developing the CAPS framework. Also consults for other firms on Python and O-O design, teaching, coding, feasibility studies, interfacing. 1989-2002, Cad.Lab @@ -287,7 +287,7 @@ he worked as teaching/published research assistant at the Institute of Theor. CS of the ETHZ. He was designer on the state-of-the-art genetic programming framework for Java JRGP, becoming involved in -Jython (the industry-strength Java re-implemetation of Python). He is +Jython (the industry-strength Java re-implementation of Python). He is now a main developer of Jython, working on internals, compilers and Java integration, and was author of Jython Essentials (O'Reilly, 2002). He is also involved on the ongoing design of Python. For his @@ -314,7 +314,7 @@ a project manager for large scale education projects for the company NetGuide Scandinavia, Gothenburg. Since 1998 she has been working with education and development project management and management of -education and consultant departements, implementing Open Source +education and consultant departments, implementing Open Source strategies and Agile development methods. Beatrice also teaches project management, leadership and communication courses for Learning Tree International. @@ -350,7 +350,7 @@ diploma thesis on Pypy - about implementing Scheme on top of Pypy. He has a strong background about web programming (python, zope, perl), now is working in dai-lab on the Technical University and is -reimplementing the parser and compiler for the agent- controling +reimplementing the parser and compiler for the agent- controlling language JADL. He also wrote a book in polish about programming the keyboard, joystick and the mouse. He is the founder and programmer of the fantasy portal gildia.com. His passions: programming, @@ -380,7 +380,7 @@ DFKI ++++ -has pervious experience of being a project coordinator in EU projects, +has previous experience of being a project coordinator in EU projects, ensuring smooth communication between the project and the FP6 project officer. @@ -407,12 +407,12 @@ Strakt ++++++ -brings manangement knowhow and entrepreneurial skills to the project +brings management knowhow and entrepreneurial skills to the project as well as showcasing how to apply the results of the project in a major business application. Strakt will also bring Tim Peters to the project. Tim has always been -a core developer of the Python langauge, what we call CPython. Apart +a core developer of the Python language, what we call CPython. Apart from being an outstanding programmer, Tim has intimate knowledge about all the details of the Python language definition. As Director of the Python Software foundation, Tim Peters is also responsible for the @@ -450,26 +450,26 @@ be funded by the Commission, as an extra point of reference. **Holger Krekel** will also be an active PBF representative in the -project, with a focus on devlopment, packaging and dissemination +project, with a focus on development, packaging and dissemination tools. He will also be a main contributor in matters of systems architecture. **Christian Tismer** will join the project under the auspices of the PBF. Christian is the developer of Stackless Python, which is the -blueprint for how we intend to implement persistant threads. +blueprint for how we intend to implement persistent threads. **Alex Martelli**, being a prolific writer and popular speaker as well as a Python programmer, Alex is uniquely suited for widely -disseminating the progress and the results of the project. He ilso a +disseminating the progress and the results of the project. He is also a board member of the PBF. The PBF also provides important outreach to the members of Eastern -Europe, and Candiadate Countries. Since its founding, it has had +Europe, and Candidate Countries. Since its founding, it has had a board member responsible for precisely that: -- I've been a PBF board member from its founding. I am responsible for - the Eastern Europe liasons. I am an intermediary of sorts between +- I've been a PBF board member from its founding. I am responsible for + the Eastern Europe liaisons. I am an intermediary of sorts between the PBF and the businesses located in the candidate countries of Eastern Europe. The PBF is an important link between businesses in the EU and the candidate countries. @@ -477,12 +477,12 @@ Jacek Artymiak Extra care will be taken to see that our results will be properly -disemminated to our PBF members in the Candidate Countries. +disseminated to our PBF members in the Candidate Countries. Ability to deliver ++++++++++++++++++ -DFKI, Logilab, Max Planck Intitut and University of Southampton have +DFKI, Logilab, Max Planck Institut and University of Southampton have already successfully participated in EU projects, so their ability to deliver on another project should not be in doubt. @@ -490,7 +490,7 @@ products, which show their capability to handle large undertakings. Krekel has demonstrated his ability to deliver results during the -prototype phase that has preceeded this application. For the rest of +prototype phase that has preceded this application. For the rest of the PBF, it should be noted that the chairman of the SIG is a member of the project, as well as 4 of the members of the PBF board; Chauvat, Creighton, Hall?n and Martelli. The stated merits of these people and @@ -600,7 +600,7 @@ 'know-how' that you need to bring a new person up to speed in a project.) -The PBF, as a non-profit, is a vehicle which is perfect for harnassing +The PBF, as a non-profit, is a vehicle which is perfect for harnessing the skills of the seasonal worker, particularly those in SMEs. SMEs will not have to dedicate a full person to a project, full-time, but can contribute 'only to one work package' or 'only to one task in one From pedronis at codespeak.net Tue Oct 14 03:32:28 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 03:32:28 +0200 (MEST) Subject: [pypy-svn] rev 1882 - pypy/trunk/doc/funding Message-ID: <20031014013228.E69305B081@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 03:32:28 2003 New Revision: 1882 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: typos Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Tue Oct 14 03:32:28 2003 @@ -9,9 +9,9 @@ proposal (workpackages, Gantt-chart, deliverables, quality control etc). It also means that the project process, once the project get started, will work from a evaluate-feedback-change perspective, or so -called "learning loops" in which project management will continuosly -follow up on the intital project plan but also evaluate process, -teameffectiveness, communication climate. From these learning loops +called "learning loops" in which project management will continuously +follow up on the initial project plan but also evaluate process, +team effectiveness, communication climate. From these learning loops change, when necessary, will be applied throughout the process. To illustrate the focus on development process as well as project focus: @@ -31,9 +31,9 @@ communication in the project in what we have experienced to be a very constructive way. -Our reasons for choosing this development and projectmethod are several: +Our reasons for choosing this development and project method are several: -- This project has a history of 6 months in which the team succesfully +- This project has a history of 6 months in which the team successfully implemented sprints and agile development methods - In this project, team members from at least 5 different countries @@ -41,12 +41,12 @@ forum in which the team members meet up and work together in real life -- The sprints will be open for non teamm embers to participate in the +- The sprints will be open for non team members to participate in the development process, thus allowing for an open and feedback driven process - The sprints will be the forum in which knowledge will be shared and - the transparancy within the project organisation will be measured + the transparency within the project organisation will be measured We will during the project focus on evaluating and documenting our project method and share knowledge and experience in that area as @@ -82,17 +82,17 @@ - participate in reports to management board and project coordinator - manage project administration (reports, documentation,etc) - manage routines and tracking of sprints, quality assurance of project -- process, resourceallocation +- process, resource allocation - manage contact with external partners - manage the day-to-day operations of the project (ex. executing - decisions made by management board) - manage the knowledge process and actively spread information to the -- stakeholders regarding methods used and knowledge aquired +- stakeholders regarding methods used and knowledge acquired The reasons for having a structure based on a project manager and assisting project manager are: - both the development and the project process will recieve due attention + both the development and the project process will receive due attention in that the persons chosen have expert skills in these different areas the project will not be exposed to the risk that a single project @@ -135,10 +135,10 @@ in G?teborg, Sweden 9-11 June 2004. **Beatrice D?ring** has experience in large scale education projects -involving working with consortiums of three companies servicing a -stakeholdergroup of about 30 recruiting companies. These large +involving working with consortia of three companies servicing a +stakeholder group of about 30 recruiting companies. These large education projects was part of a national program to solve shortages -of skilled IT-personel during the years 1998- 2000. 200 students +of skilled IT-personnel during the years 1998- 2000. 200 students participated in the projects and the projects met their deliverables in that over 80% of the student were employed after the education. The project team consisted of 7 persons working full time. As a project @@ -147,9 +147,9 @@ stakeholder participation in the projects. She was also responsible for reporting and documenting the project to the client. -Since 2000 she has been involved in similar assigments, one recently +Since 2000 she has been involved in similar assignments, one recently finished for University of Blekinge in which the education was -directed towards recruiting companies in the gamedevelopment +directed towards recruiting companies in the game development industry. She has also worked as project manager for several development projects during the time 1998-2002. @@ -172,7 +172,7 @@ successful and the company grew to 35 employees under his leadership. The large scale education projects that **Beatrice** managed had a -profitmargin of 20% which was met. The total budget for these projects +profit margin of 20% which was met. The total budget for these projects was SEK 20 million. She has also recently been involved in the prestudy, budgeting and start of a 6 year long education project in Arvika, Sweden with a total budget of 18 million SEK. @@ -186,9 +186,9 @@ **Jacob Hall?n** has experienced leadership challenges in different situations. In his role as an officer in the reserve of the Swedish -army he has been deputy rifle platoon leader in the Swedsh UN forces +army he has been deputy rifle platoon leader in the Swedish UN forces in Cyprus, duty officer with responsibility for the battalion safety -and security in Lebanon and instructor/platoon leader for traing raw +and security in Lebanon and instructor/platoon leader for training raw recruits. He has been a teacher at the Chalmers University of Technology, for Informator and for LearningTree International, all of which include being a leader for your students. At NetGuide @@ -210,13 +210,13 @@ as well as in lineorganisations since 1998. During four years she was a part of a management team of five people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, motivating -and developing her personel. +and developing her personnel. Beatrice employs strategies of empowerment, active listening combined with creating and maintaining an open communication climate based on honesty and trust the achieve goals together with her team. Beatrice have been teaching management oriented courses (leadership, project -management, communication, conflictresolving) for Learning Tree +management, communication, conflict resolving) for Learning Tree International since 2000 in both Sweden and USA. Management structure @@ -248,7 +248,7 @@ will be solved by voting (each partner have a vote, in case of tie - the project manager will have a casting vote) -Representantives in the technical board: +Representatives in the technical board: - Armin Rigo, University of Southampton - Samuele Pedroni, MPI @@ -273,7 +273,7 @@ These responsibilities are reported to the management board through the technical director who is a representative on the management board. In the technical board, decisions that cannot be made by consensus and -open discussions will be solved by voting (each representantive have a +open discussions will be solved by voting (each representative have a vote, in case of tie - the technical director will have a casting vote) @@ -283,7 +283,7 @@ This means that the project will be ruled by one primary management strategy - to delegate as much responsibility to the developer team and the persons responsible for each individual workpackage. This rule _will_ -guide all planning and decisionmaking in the two boards. +guide all planning and decision-making in the two boards. Coordinator ----------- @@ -326,9 +326,9 @@ +++++++++++++ The project team will meet at the "sprints" which take place on a six -week cycle ( se below). During the sprints, there will be time +week cycle ( see below). During the sprints, there will be time allotted to discuss and evaluate the project process, track progress, -discuss resource allocation, new teammembers. The project manager is +discuss resource allocation, new team members. The project manager is responsible for the invite and agenda as well as managing the meetings.Agenda and discussions/decisions on these meeting will be documented and put up in the internal project web. @@ -339,7 +339,7 @@ Every six months, as preparation for the Management Board meetings and project reviews from the EU project office, the project management team invites the team to an evaluation workshop, lasting for a day, in -which product as well as process is being reviewed. Riskassessment is +which product as well as process is being reviewed. Risk assessment is also an important part of this workshop. This meeting could result in proposed changes that will then be reported to the Management Board for decision. The project manager is responsible for the invite and @@ -364,10 +364,10 @@ During the "Sprints", developers usually pair up and write unit-tests to test the to-be-implemented features before actually -adding them. The unittest-first approach helps to understand the +adding them. The unit-test-first approach helps to understand the planned feature. Additionally, the discussion in a pair makes sure -that obviously wrong pathes of development are avoided. If something -seems too hard to test or to pin down explicitely this is taken as an +that obviously wrong paths of development are avoided. If something +seems too hard to test or to pin down explicitly this is taken as an indication of an underlying design problem. Note that more traditional approaches usually follow a model where @@ -393,11 +393,11 @@ With a very-high-level-language like Python rapid development in coding-sprints becomes especially effective. A VHLL-language generally allows to focus on ideas rather than on low- level language -details. In combintation with pervasive test-driven development this -eases high-quality rapid evolution towards the intendent +details. In combination with pervasive test-driven development this +eases high-quality rapid evolution towards the intended goals. Obviously, the PyPy developers are very experienced with Python and bigger applications in general. Thus the full potential of agile -methodologies is unvealed during PyPy sprints. In less than five weeks +methodologies is unveiled during PyPy sprints. In less than five weeks worth of development (during four sprints) the group produced a working prototype which is a big success not only in the eyes of its developers. @@ -411,10 +411,10 @@ However, it is expected that design and implementation choices will usually be determined by consensual agreement or by informal votes on the development mailing list. This -is common practice within the Python and many others free softare +is common practice within the Python and many others free software communities. Also, the PyPy developers and researchers will construct few if any formal hierarchies between them. Constantly working -together with agile methodologies and the visilibity of each +together with agile methodologies and the visibility of each individual contribution help enforce high-quality program code and good design decisions. @@ -429,9 +429,9 @@ forms the basis to maintain a high- quality general technical direction. -The developers deploy agile methodologies like unittest-driven +The developers deploy agile methodologies like unit-test-driven development and pair-programming. By the end of the project we expect -to have produced more than 3000 unittests testing every aspect of the +to have produced more than 3000 unit-tests testing every aspect of the runtime system. The presence of such tests also allows to rapidly change parts of the implementation without fear of breaking functionality elsewhere. We also plan to release our runtime system @@ -440,13 +440,13 @@ To support the open development we base all of our documents, source code and website information on a version control system. In -combintation with a notification on all changes this ensures that all +combination with a notification on all changes this ensures that all interested parties can review and react to developments. The PyPy developers have produced a working prototype within four one-week sprints and a little development in between. The code and design quality of the project is already widely accepted. There are -now 400 unittests. As a consequence, Guido van Rossum, the inventor +now 400 unit-tests. As a consequence, Guido van Rossum, the inventor and maintainer of today's Python, listed is as the number one project he would like to succeed. He previously attended one of our sprints and got deeply involved with our architecture and source code which he @@ -497,17 +497,17 @@ to stakeholders (consortium companies and partners) and the EU project office. -Transparancy concerning information and decisionmaking is vital for the +Transparency concerning information and decision-making is vital for the PyPy project: -- all discussions, protocolls, reports, reviews and product/project +- all discussions, protocols, reports, reviews and product/project information will be accessible to all people participating in the project - information of the kind mentioned above will not be altered to suit different target groups in the project - this minimizes the risk for information to be filtered -The technical development of PyPy is driven by open continous +The technical development of PyPy is driven by open continuous discussion. Many of the involved decisions are made and verified during one-week working meetings, so called "sprints". Members from the larger Python software community are publicly invited and have the @@ -527,7 +527,7 @@ web-channels to gather feedback and educate others about changes. We will present multiple reports and scientific papers on major -conferences such as EuroPython (Python's european community +conferences such as EuroPython (Python's European community conference), FOSDEM (Free and Open Source Developer European Meeting), OSCON (Open Source Convention), PyCon (python developer conference) and to domain specific audiences such as embedded device @@ -549,7 +549,7 @@ - DFKI, Germany - Python Business Forum, International - University of Southampton, UK -- Max Planck Intitut, Germany +- Max Planck Institut, Germany - AB Strakt, Sweden - Logilab, France - Changemaker, Sweden @@ -577,6 +577,6 @@ fully involved and based on these principles. We also believe that for a language runtime system like PyPy a free license is of vital importance to reach wide deployment and recognition. Such a license is -also a neccessity to allow PyPy to become a reference implementation of +also a necessity to allow PyPy to become a reference implementation of the Python language specification. From alastair at codespeak.net Tue Oct 14 06:32:43 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Tue, 14 Oct 2003 06:32:43 +0200 (MEST) Subject: [pypy-svn] rev 1883 - pypy/trunk/doc/funding Message-ID: <20031014043243.453FB5B081@thoth.codespeak.net> Author: alastair Date: Tue Oct 14 06:32:42 2003 New Revision: 1883 Added: pypy/trunk/doc/funding/manpower-overview.xls (contents, props changed) Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Manpower overview added to B4 Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 06:32:42 2003 @@ -621,45 +621,66 @@ Full duration of project: 24 months -Project acronym - PyPy -FIXME ALASTAIR: Create this section ++---------------------------------------------------------------------------------------------------------------------------------------------+ +| |DFKI |USH |MPI |PBF |Strakt |Logilab |CM |Total | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|Research and | | | | | | | | | +|Innovation | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP2: Infrastructure | | | | 12| | | | 12| +|and Tools | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP3: Synchronisation | | 12| | | | | | 12| +|with Standard Python | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP4: PyPy Core | 5| | 9| 18| | 4| | 36| +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP5: PyPy Translation| | 9| 9| 3| 18| | | 39| +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP6: Core | | 15| 9| | | | | 24| +|Optimisations | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP7: Translator | | | | 22| | | | 22| +|Optimisations | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP8: Dynamic | | | 9| 9| 18| | | 36| +|Optimisations | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP9: Search and Logic| 16| | | | | 9| | 25| +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP10: Aspects and | 6| | | | | 9| | 15| +|Contracts | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP11: Specialised | | | | | | 9| 1| 10| +|Hardware | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP12: Security, | | | | | | | | | +|Distribution and | | | | 12| 12| | | 24| +|Persistence | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP13: Integration and| | | 12| 6| | | | 18| +|Configuration | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +| | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|Total Research and | 27| 36| 48| 82| 48| 31| 1| 273| +|Innovation | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|Management | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP1: Coordination and| 8| | | | 8| | 8| 24| +|Management | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|WP14: Documentaion | | | | 12| | | 12| 24| +|and Dissemination | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +| | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|Total Management | 8| 0| 0| 12| 8| 0| 20| 48| +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +| | | | | | | | | | +|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| +|Total | 35| 36| 48| 94| 56| 31| 21| 321| ++---------------------------------------------------------------------------------------------------------------------------------------------+ -:: - - Short Names - Partner 1 - Partner 2 - Partner 3 - Partner 4 - Partner 5 - etc - TOTAL PARTNERS - - - WP name - WP name - WP name - etc - Total research/innovation - - - - Demonstration activities - WP name - WP name - WP name - etc - Total demonstration - - - - Consortium management activities - WP name - WP name - WP name - etc - Total management - - - TOTAL ACTIVITIES Added: pypy/trunk/doc/funding/manpower-overview.xls ============================================================================== Binary file. No diff available. From alastair at codespeak.net Tue Oct 14 07:14:13 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Tue, 14 Oct 2003 07:14:13 +0200 (MEST) Subject: [pypy-svn] rev 1884 - pypy/trunk/doc/funding Message-ID: <20031014051413.D14FA5B081@thoth.codespeak.net> Author: alastair Date: Tue Oct 14 07:14:13 2003 New Revision: 1884 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: Added info on the coordinator and mentioned the consortium agreement Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Tue Oct 14 07:14:13 2003 @@ -292,6 +292,11 @@ Alastair Burt, DFKI +He has participated in several European projects, was the coordinator of +the EU-funded ASWAD free software project, and is in the coordinating team +of the EUTIST-AMI cluster. The DFKI itself has over a decade of experience +of working with the EU's financial and reporting procedures. + The responsibilities of the project coordinator will include: - to manage negotiations regarding proposal @@ -539,23 +544,6 @@ method will only by required when the project reaches the point where users begin to rely on aspects of our implementation. -Consortium ----------- - -The consortium consists of the following members: - -FIXME ALASTAIR: More details? Addresses, organisation numbers....? - -- DFKI, Germany -- Python Business Forum, International -- University of Southampton, UK -- Max Planck Institut, Germany -- AB Strakt, Sweden -- Logilab, France -- Changemaker, Sweden - -FIXME ALASTAIR: - something we should mention here about the agreement? - Management of Knowledge and Intellectual Property -------------------------------------------------- @@ -580,3 +568,13 @@ also a necessity to allow PyPy to become a reference implementation of the Python language specification. +Consortium Agreement +-------------------- + +In the case that the proposal is accepted by the EU, the coordinator and +the project management team will draw up a consortium agreement that +formalises the license policy outlined above. As all technical deliverables +will be fully public, for general modification and reuse, all partners, and +indeed the rest of the world, are free to exploit the results as they +choose. + From alastair at codespeak.net Tue Oct 14 08:22:57 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Tue, 14 Oct 2003 08:22:57 +0200 (MEST) Subject: [pypy-svn] rev 1886 - pypy/trunk/doc/funding Message-ID: <20031014062257.DE5135B081@thoth.codespeak.net> Author: alastair Date: Tue Oct 14 08:22:57 2003 New Revision: 1886 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: Added a para on aspects and contracts Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Tue Oct 14 08:22:57 2003 @@ -361,8 +361,14 @@ WP10_ will base itself on the language extensions developed in WP09_. -FIXME_ALASTAIR write this paragraph - +A major goal of the PyPy project is to enable people to carry out more of +their programming tasks in Python without having to resort to other +programming languages. We will therefore exploit the optimisations in the +PyPy implementation and the constructs for constraints and search to +enhance the object model, thus offering in Python what can currently only +be found in other object-oriented languages. In particular, we will offer +the ability to compose program functionality with aspects and to design +object-oriented programs through contracts. Interpreter adaptations +++++++++++++++++++++++ From alastair at codespeak.net Tue Oct 14 08:34:02 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Tue, 14 Oct 2003 08:34:02 +0200 (MEST) Subject: [pypy-svn] rev 1887 - pypy/trunk/doc/funding Message-ID: <20031014063402.7DAAA5B081@thoth.codespeak.net> Author: alastair Date: Tue Oct 14 08:34:01 2003 New Revision: 1887 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Better reST table for manpower overview Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 08:34:01 2003 @@ -622,65 +622,65 @@ Full duration of project: 24 months -+---------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | |DFKI |USH |MPI |PBF |Strakt |Logilab |CM |Total | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Research and | | | | | | | | | |Innovation | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP2: Infrastructure | | | | 12| | | | 12| |and Tools | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP3: Synchronisation | | 12| | | | | | 12| |with Standard Python | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP4: PyPy Core | 5| | 9| 18| | 4| | 36| -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP5: PyPy Translation| | 9| 9| 3| 18| | | 39| -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP6: Core | | 15| 9| | | | | 24| |Optimisations | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP7: Translator | | | | 22| | | | 22| |Optimisations | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP8: Dynamic | | | 9| 9| 18| | | 36| |Optimisations | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP9: Search and Logic| 16| | | | | 9| | 25| -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP10: Aspects and | 6| | | | | 9| | 15| |Contracts | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP11: Specialised | | | | | | 9| 1| 10| |Hardware | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP12: Security, | | | | | | | | | |Distribution and | | | | 12| 12| | | 24| |Persistence | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP13: Integration and| | | 12| 6| | | | 18| |Configuration | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Total Research and | 27| 36| 48| 82| 48| 31| 1| 273| |Innovation | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Management | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP1: Coordination and| 8| | | | 8| | 8| 24| |Management | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP14: Documentaion | | | | 12| | | 12| 24| |and Dissemination | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Total Management | 8| 0| 0| 12| 8| 0| 20| 48| -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | | | | | | | | | | -|---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------| ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Total | 35| 36| 48| 94| 56| 31| 21| 321| -+---------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ From sanxiyn at codespeak.net Tue Oct 14 09:51:20 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 14 Oct 2003 09:51:20 +0200 (MEST) Subject: [pypy-svn] rev 1888 - in pypy/trunk/src/pypy: objspace/flow translator Message-ID: <20031014075120.9CF925A27F@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 14 09:51:19 2003 New Revision: 1888 Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/flowmodel.py Log: removed not executed code Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Tue Oct 14 09:51:19 2003 @@ -59,17 +59,6 @@ self.executioncontext = ec ec.build_flow() return ec.graph - - frames = [frame] - while len(frames) > 0: - crnt_frame = frames.pop() - ret_val = crnt_frame.run() - self._crnt_block.branch = EndBranch(ret_val) - g = self._graph - del self._graph - del self._crnt_block - del self._crnt_ops - return g # ____________________________________________________________ def do_operation(self, name, *args_w): Modified: pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/flowmodel.py Tue Oct 14 09:51:19 2003 @@ -102,7 +102,6 @@ def __hash__(self): return hash((self.opname,tuple(self.args),self.result)) - def __repr__(self): return "%s <- %s(%s)" % (self.result, self.opname, ", ".join(map(str, self.args))) From hpk at codespeak.net Tue Oct 14 11:24:58 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 11:24:58 +0200 (MEST) Subject: [pypy-svn] rev 1889 - pypy/trunk/doc Message-ID: <20031014092458.A302E5A27F@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 11:24:58 2003 New Revision: 1889 Removed: pypy/trunk/doc/B2.0.0_background pypy/trunk/doc/B2.0_relevance Log: removed supposedly stale files. you can get them back by svn up -r 1784 in your doc directory. Deleted: /pypy/trunk/doc/B2.0.0_background ============================================================================== --- /pypy/trunk/doc/B2.0.0_background Tue Oct 14 11:24:58 2003 +++ (empty file) @@ -1,163 +0,0 @@ -Background: - -Python is a portable, interpreted, object-oriented Very-High Level -Language (VHLL). Its development started in 1990 at CWI, Centrum voor -Wiskunde en Informatica, the National Research Institute for -Mathematics and Computer Science in the Netherlands. Its principal -author is Guido van Rossum, a Dutch citizen currently living in -the United States. It is an Free/Open-Source language. The most -recent version of the language is Python 2.3, released under -the Python Software Foundation License, which is approved by both -the Open Source Initiative, and the Free Software Foundation. - -FIXME: Include this as a reference. -http://www.opensource.org/licenses/PythonSoftFoundation.php - -Python has tens, perhaps hundreds of thousands of active users -worldwide, which makes it one of the top ten most popular programming -languages in the world. [FIXME Footnote -- see section XXX and Appendex XXX -for support for this assertion]. C, C++, Java, Perl, and Visual Basic -are acknowledged to have a larger user base. But the languages which -most excite the Computer Science Research community - Self, Lisp, -Haskell, Limbo, and so on, are nowhere on this list. Thus European -economic competitiveness suffers. The innovative research lives in -academia, trapped in languages that are rarely used. - -Of those more popular languages, two, Java and Visual Basic are -proprietary. Sun Microsystems owns Java, and Microsoft owns Visual -Basic. Any company which writes its software in Java or Visual Basic -is at the mercy of these large American companies. And this is a -real, and not theoretical threat. In 2002, Microsoft announced that -it would no longer be supporting Visual Basic 6.0. after the year -2005. All Visual Basic Developers have been told to convert their -code to run under Microsoft's new .NET framework. In 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, because after settling a lawsuit with Sun -Microsystems. Microsoft is making these decisions because it makes -business sense for Microsoft, regardless of its effect on the businesses -who develop software using Microsoft proprietary software. - -In the face of these threats to the very survival of one's business, -European SMEs are moving to Free/Open Source languages such as Python. -In the year 2002, a group of SME's who rely on the Python program -language came together to form the Python Business Forum. -(www.python-in-business.org), at EuroPython, the European Python -Community Conference (www.europython.org). - -FIXME! include the bylaws of the PBF, its Board of Directors and -the like as an Appendex. - -While each SME member of the Python Business Forum has sufficient -faith in the Python programming language to use it for the development -of its own projects, it was agreed that there are defects in the -current implementation of the language. The two most often cited was -that the Python was too large for embedded applications and -applications designed for handhelds, and that the interpreter itself -ran too slowly. - -The developers of systems intended to run on tiny machines would like -a language with a 'smaller footprint'. They would like to strip out -everything which they do not need from the language and run with the -bare-bones minimum. This is hard to do in any language, and Python -was not implemented with this goal in mind. Another goal that was not -paramont was execution speed. Python is a dynamically-typed, -late-binding, interpreted language. Optimisation must be done at -run-time, and is notoriously more difficult to optimise than -statically typed, early-binding compiled languages such as C or C++. - -Meanwhile, on the German Python mailing list, -http://starship.python.net/mailman/listinfo/python-de an unrelated -discussion was about to bear fruit. FOOTNOTE: -Here's the mail that started it all, -http://starship.python.net/pipermail/python-de/2003q1/002925.html -include full text. - -Academically trained Python -programmers were pondering writing an implementation of Python in -itself. This group included Armin Rigo, author of Psyco -http://psyco.sourceforge.net/introduction.html, a specialising -Just-In-Time compiler for Python, and Christian Tismer, author of -Stackless Python, http://www.stackless.com/ an implementation of -Python which does not use the C stack. These people knew and were -interested in doing exactly that as part of the design. - -It is useful to quote Armin Rigo, stating the goals of Psyco in full, -from its website: - - My goal in programming Psyco is to contribute to reduce the - following wide gap between academic computer science and industrial - programming tools. - - While the former develops a number of programming languages - with very cool semantics and features, the latter stick with low-level - languages principally for performance reasons, on the ground that the - higher the level of a language, the slower it is. Althought clearly - justified in practice, this belief is theoretically false, and even - completely inverted --- for large, evolving systems like a whole - operating system and its applications, high-level programming can - deliver much higher performances. - - The new class of languages called "dynamic scripting - languages", of which Python is an example, is semantically close to - long-studied languages like Lisp. The constrains behind their designs - are however different: some high-level languages can be relatively - well statically compiled, we can do some type inference, and so on, - whereas with Python it is much harder --- the design goal was - different. We now have powerful machines to stick with interpretation - for a number of applications. This, of course, contributes to the - common belief that high-level languages are terribly slow. - - Psyco is both an academic and an industrial project. It is an - academic experiment testing some new techniques in the field of - on-line specialization. It develops an industrially useful - performance benefit for Python. And first of all it is a modest - step towards: - - High-level languages are faster than low-level ones! - -FIXME Footnote to: http://psyco.sourceforge.net/introduction.html - -PyPy would be a more ambitious step, of course. - -Also instrumental was Holger Krekel, at TrillkeGut a (what the heck -do you call it?? in Hildesheim). Holger Krekel was experienced -in one of the latest in Agile Software methodologies, Sprint-driven -development, from his experience in the Zope HOLGER -WRITE ME A PARAGRAPH HERE PLEASE ABOUT WHY THIS IS COOL - - -This was precisely what the Python Business Forum members had been -looking for. Academics conversant in the latest in compiler theory -who were interested in producing the Python interpreter which they -needed. We began discussing the possibility of collaboration, both -on mailing lists, FIXME list our mailing list and in our first -face-to-face meeting at Hildesheim, Germany Feb 17-23 2003. - -We decided to make a prototype to test the proof of concept, and our -ability to work together. We would get together every six weeks in -our own time, and work on the prototype in intense work sessions which -are known as 'Sprints'. FIXME Etymology of Sprint? After the first -Sprint at TrillkeGut in Hildesheim, we held subsequent Sprints at AB -Strakt in Gothenburg, Sweden, and at the University of -Louvain-La-Neuve in Belgium. - -By the time the Louvain-La-Neuve Sprint, which was held June 20-24, -ended, the PyPy project had produced a working prototype. There -existed a working interpreter and standard implementation of 90% of -the python types, as well as such language features as nested scopes, -generators and metaclasses. We had begun work on a type inference -engine. Perhaps most importantly, we had the enthusiastic support of -the Python community. Guido van Rossum, author of Python, not only -endorsed the PyPy project, but attended our Louvain-La-Neuve Sprint. -No work had been done on actually Optimising the code, so it ran -FIXME 30,000 times(?) slower than existing Python. But for a -proof of concept, approximately three weeks work total, it was -a success. - -It was time to look for funding. - -On 17th of June, that is to say exactly one week before, the 2nd Call -of the Information Society Technologies [IST] Priority went out. -Included in it was IST-2002-2.3.2.3 - Open development platforms -for software and services. We believe that what we intend to do -is perfectly addressed by this Call. Deleted: /pypy/trunk/doc/B2.0_relevance ============================================================================== --- /pypy/trunk/doc/B2.0_relevance Tue Oct 14 11:24:58 2003 +++ (empty file) @@ -1,139 +0,0 @@ -B.2 Relevance to the objectives of the IST Priority - -Describe the manner in which the proposed project's goals address the -scientific, technical, wider societal and policy objectives of the IST -Priority in the areas concerned. - -(Recommended length ? three pages) -------------------------------------------- - -PyPy is a precise match for IST-2002-2.3.2.3 - Open development platforms -for software and services. Its stated objective is as follows: - - To build open development and run-time environments for software - and services providing the next generation of methodologies, - interoperable middleware and tools to support developers - through all - phases of the software life-cycle, from requirements analysis until - deployment and maintenance - in the production of networked and - distributed software systems and services, embedded software and - value-added user services. This will enable the development of future - software engineering methods and tools. - -The PyPy project aims to build an flexible and fast implementation of -the Open Source programming language Python written in itself. Python -is a Very High Level Language, a modern tool for developing software. -While Python is already suitable for developing software of all sizes, -this new implementation of Python would be particularly suitable for -the development of networked, distributed software systems, and -embedded software. It will facilitate the development of future -software engineering methods and tools. - -Priority is to be given to projects in which - - 'strong industrial users join forces with software and service - suppliers in building common platforms with support of academic - research partners'. - -This Project is a collaboration between Academic Researchers, and -Software and Service providers to produce an outcome desired by -all industrial users. ASK_STOCKHOLM 'what's an Industrial User?' -Is AB Strakt one? Large companies, who are not software providers, -such as Bang and Bang & Olufsen, the Danish maker of high-end audio -equipment, http://www.bang-olufsen.com/ have expressed interest in -using PyPy once it is developed. - -Moreover, our project is relevant to every focus objective. - -Focus is on: - - a) High level methods and concepts (esp. at requirements and - architectural level) for system design, development and - integration, addressing non-functional aspects, complexity, - autonomy and composability. - -PyPy will advance the 'state-of-the-art' in specializing compilers, -with a new architecture for Object Libraries that provide for radical -improvements in composability, autonomy, and composability. - -ASK_STOCKHOLM DO I HAVE TO EXPLAIN THIS MORE? - - b) Open and modular development environments, enabling - flexibility and extensibility with new or sector-specific - tools (e.g. intelligent distributed decision support), - supporting different adaptable development processes and - methodologies and ensuring consistency and traceability - across the development lifecycle. - -Flexibility is one of the Primary goals of PyPy. Our new architecture -will be the basis of a host of more flexible and extensible ways to -create software products. PyPy will, of course, be released as -Free/Open software, under the MIT license. - -FOOTNOTE: Stick MIT License in here. - -ASK_STOCKHOLM -- Am I correct? They want the thing we made to be -Open and Modular? Or are they asking that our own way of working uses -Open and Modular techniques? We do this as well .... - - c) Light/agile methodologies and adaptive workflow providing - a dynamic and adaptive environment, suitable for - co-operative and distributed development. - -Each member of the group is committed to Agile Methodolgies. Some of -us have experience with Crystal and others with XP, [FIXME add URLS -and see if we have any more trained people on the team]two of the more -popular ones. Moreover, since we have been active for many years in -the Open Source community, we are already used to co-operating with -others in a distributed development process. - -ASK_STOCKHOLM -- is this what they want, or more like this? - -AB Strakt is a young Swedish software company whose main product, CAPS -is an adaptive workflow framework. A faster Python would seamlessly improve -this product, and those applications which are based upon it. - -[FIXME: if we want this bit, we want to refere to the AB Strakt Appendex, that - says that we are a cool company, and that we do workflow and procurement, - and that we are responsible -- blah blah blah. I'll boast about - Strakt later, or see if I can steal some boasts from marketing.] - - d) Open platforms, middleware and languages supporting - standards for interoperability, composability and - integration. (incl. e.g. P2P, GRID, autonomy, agents, - dynamic adaptability and evolvability, context awareness, - customer profiles). Open source middleware layers can - facilitate rapid and broad adoption. - -PyPy is an Open Language. ASK_STOCKHOLM. So they have just asked us to -make them a languaqe? Or they just want us to use a language to make -what we are making? - - In addition, related foundational research, to be implemented by - Specific Targeted Research Projects and Coordination Actions, should - focus on fundamental design concepts, systematisation of domain - specifications, concurrency, distribution and timing, formal and - quantitative analysis and testing tools, and future database and - information system concepts. - -ASK_STOCKHOLM PyPy is Applied Research. When they say 'foundational -research' do they want 'foundational applied research', in which case -we can all cheer and say, here we are with a STREP, new foundational -research in the field of specializing compilers, just what you asked -for? Or by 'foundational research' do they mean the sort of basic -research that has no direct applications, but goes under the heading -'it is nice to learn stuff'? - - Work should where appropriate, enhance and complement work - implemented under EUREKA/ITEA and in software initiatives at member - and associated state level. The IST programme will seek active - co-operation with ITEA in software intensive systems. - -ASK_STOCKHOLM I don't know how to find out which work implemented under -EUREKA/ITEA was implemented using Python. I do know of 2 prior IST -projects. FIXME: add URL for ASWAD. A faster Python will enhance -any project done in Python. Also, if this means that EUREKA/ITEA -has more pots of money that they would like to hand us, we'd love -to take it. - - - From hpk at codespeak.net Tue Oct 14 11:37:01 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 11:37:01 +0200 (MEST) Subject: [pypy-svn] rev 1890 - pypy/trunk/doc/funding Message-ID: <20031014093701.9B90D5A27F@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 11:37:00 2003 New Revision: 1890 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: some tweaks to make this a *candidate* for an appendix A. there still are some additions/clarifications missing. Please refactor/improve! Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Tue Oct 14 11:37:00 2003 @@ -1,12 +1,8 @@ -B2.0.0 background -================= +Appendix A: History and background +================================== -THIS WE NEED TO MAKE APPENDIX A. We can canabalise as we like for -other sections. But the Message from Stockholm is, 'don't give them -a background like this. The evaluators get bored' - -The relevance of Python ------------------------ +Why Python? What is Python? +--------------------------- Python is a portable, interpreted, object-oriented Very-High Level Language (VHLL). Its development started in 1990 at CWI, Centrum voor @@ -18,21 +14,16 @@ Software Foundation License, which is approved by both the Open Source Initiative, and the Free Software Foundation. -FIXME: Include this as a reference. -http://www.opensource.org/licenses/PythonSoftFoundation.php - Python has tens, perhaps hundreds of thousands of active developers worldwide, which makes it one of the top ten most popular programming -languages in the world. [FIXME Footnote -- see section XXX and -Appendix XXX for support for this assertion]. Some other languages, -specifically C, C++, Java, Perl, and Visual Basic, have even larger -user bases but they are either proprietary or rather low-level -languages. On the other hand, the languages which most excite the -Computer Science Research community -- Self, Lisp, Haskell, Limbo, ML, -and so on -- are nowhere on this list, yet they are the targets of -most European academic research and innovation. Thus European -economic competitiveness suffers. The innovative research lives in -academia, trapped in languages that are rarely used for commercial +languages in the world. Some other languages, specifically C, C++, Java, +Perl, and Visual Basic, have even larger user bases but they are either +proprietary or rather low-level languages. On the other hand, the +languages which most excite the Computer Science Research community -- +Self, Lisp, Haskell, Limbo, ML, and so on -- are nowhere on this list, +yet they are the targets of most European academic research and innovation. +Thus European economic competitiveness suffers. The innovative research +lives in academia, trapped in languages that are rarely used for commercial development. Of those more popular languages, two, Java and Visual Basic are @@ -60,9 +51,6 @@ (www.python-in-business.org), at EuroPython, the European Python Community Conference (www.europython.org). -FIXME! include the bylaws of the PBF, its Board of Directors and the -like as an Appendix. - Advancing the Python platform ----------------------------- @@ -90,7 +78,7 @@ such as C or C++. Now a number of people and factors played together to start what is -now one of the most promising high-level-language projects. +now one of the most promising very-high-level-language projects. Some high-profile research -------------------------- @@ -103,45 +91,43 @@ Python internals and advanced research in compilers and runtime systems, and saw a Python implementation in Python itself as a chance to put the two fields together. It is useful to quote from his webpage -which states the goals of his Psyco in full: +which states the goals of his Psyco in full:: - My goal in programming Psyco is to contribute to reduce the - following wide gap between academic computer science and - industrial programming tools. - - While the former develops a number of programming languages - with very cool semantics and features, the latter stick with - low-level languages principally for performance reasons, on - the ground that the higher the level of a language, the slower - it is. Although clearly justified in practise, this belief is - theoretically false, and even completely inverted --- for - large, evolving systems like a whole operating system and its - applications, high-level programming can deliver much higher - performances. - - The new class of languages called 'dynamic scripting - languages', of which Python is an example, is semantically - close to long-studied languages like Lisp. The constraints - behind their designs are however different: some high-level - languages can be relatively well statically compiled, we can - do some type inference, and so on, whereas with Python it is - much harder --- the design goal was different. We now have - powerful enough machines to stick with interpretation for a - number of applications. This, of course, contributes to the - common belief that high-level languages are terribly slow. - - Psyco is both an academic and an industrial project. It is an - academic experiment testing some new techniques in the field - of on-line specialization. It develops an industrially useful - performance benefit for Python. And first of all it is a - modest step towards: + My goal in programming Psyco is to contribute to reduce the + following wide gap between academic computer science and + industrial programming tools. + + While the former develops a number of programming languages + with very cool semantics and features, the latter stick with + low-level languages principally for performance reasons, on + the ground that the higher the level of a language, the slower + it is. Although clearly justified in practise, this belief is + theoretically false, and even completely inverted --- for + large, evolving systems like a whole operating system and its + applications, high-level programming can deliver much higher + performances. + + The new class of languages called 'dynamic scripting + languages', of which Python is an example, is semantically + close to long-studied languages like Lisp. The constraints + behind their designs are however different: some high-level + languages can be relatively well statically compiled, we can + do some type inference, and so on, whereas with Python it is + much harder --- the design goal was different. We now have + powerful enough machines to stick with interpretation for a + number of applications. This, of course, contributes to the + common belief that high-level languages are terribly slow. + + Psyco is both an academic and an industrial project. It is an + academic experiment testing some new techniques in the field + of on-line specialization. It develops an industrially useful + performance benefit for Python. And first of all it is a + modest step towards: - High-level languages are faster than low-level ones! - -FIXME Footnote to: http://psyco.sourceforge.net/introduction.html + High-level languages are faster than low-level ones! Although Armin Rigo proved with his 'Psyco' project that higher level -languages can actually be optimized to be as fast or faster than C, he +languages can sometimes be optimized to be as fast or faster than C, he was very limited by the fact that Python is itself implemented in C like almost all other languages in industrial use today. There was no real-life project who tried to go all 'optimize high-level down to @@ -184,8 +170,6 @@ Pair-Programming. Not only is this a lot of fun, but it is a way to transmit knowledge and enthusiasm throughout the community. -ASK_STOCKHOLM DO we need to discuss Sprints more? - Holger Krekel, seeing the opportunity to launch the PyPy project with Armin Rigo and Christian Tismer offered to organize the first one-week meeting, the 'Sprint towards a minimal Python'. Soon many interested @@ -198,6 +182,7 @@ Here is the mail that started this now rapidly evolving project http://starship.python.net/pipermail/python-de/2003q1/002925.html + Some promising open-source development tools -------------------------------------------- @@ -211,6 +196,7 @@ net-connectivity for the various web services needed by the PyPy developers. + Research, pragmatism and industry experience combined ----------------------------------------------------- @@ -238,11 +224,7 @@ week you could already run simple Python programs within PyPy. PyPy had gone from being 'a nice idea' to 'something we knew we could do'. - - - - -The third sprint was organized by interested developers in Belgium at +The third sprint was again organized by interested developers in Belgium at the University in Louvain-La-Neuve, Belgium and held June 20-24. We invited Guido van Rossum, the inventor of Python to attend. He not only attended the Belgium sprint but announced a few days later at the @@ -262,27 +244,22 @@ enthusiastic support of the Python community at the EuroPython conference. -No work had been done on actually optimising the code so it ran around -30,000 times slower than the existing CPython-implementation but this -was expected from the start. Nevertheless, for a proof of concept, -approximately four weeks work total for a group of about a dozen -people, it was clearly a success. +The fourth sprint in Berlin prototyped translation of Python functions +to low-level code with the help of Pyrex, an intermediate layer. With +a combination of novel techniques, Object Spaces and Abstract Interpretation, +it was clear that the general direction was viable and productive. + +No work had been done on actually optimizing the complete prototype into +low-level static code so it still runs around 30,000 times slower than the +existing CPython-implementation but this was expected from the start. +Nevertheless, for a proof of concept, approximately five weeks work +total for a group of about a dozen people, it was clearly a success. It was time to look for funding. -< -While some people suggested to apply to DARPA for funding we realized -that most of us were rooted in Europe and it would make more sense to -look for European possibilities. - -I don't think that this is wise. Why remind them that we could get -somebody else to fund it, maybe? Besides, everybody on the list of -people they are getting are in Europe, not just most ... -> - On June 17th, the 2nd Call of the Information Society Technologies [IST] Priority went out. Included in it was IST-2002-2.3.2.3 - Open development platforms for software and services. -We believe that what we intend to do is a perfect fit for the goals of -this call. +We believe that what we intend to do is a perfect fit for the goals +of this call. From jacob at codespeak.net Tue Oct 14 11:52:49 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 11:52:49 +0200 (MEST) Subject: [pypy-svn] rev 1891 - pypy/trunk/doc/funding Message-ID: <20031014095249.9D5FC5A27F@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 11:52:48 2003 New Revision: 1891 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: Modified Logilab number Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From hpk at codespeak.net Tue Oct 14 12:17:59 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 12:17:59 +0200 (MEST) Subject: [pypy-svn] rev 1892 - pypy/trunk/doc/funding Message-ID: <20031014101759.A4B725A27F@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 12:17:58 2003 New Revision: 1892 Modified: pypy/trunk/doc/funding/abstract.asc Log: some minor tweaks to stress research ... Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Tue Oct 14 12:17:58 2003 @@ -7,7 +7,7 @@ in which one can code up a given algorithm the fastest. The project aims to bring this highly productive language to a wider range of platforms and devices by providing simple means to build a highly - customized language version. + customized language version. The approach @@ -18,8 +18,8 @@ Europe. Sprints accelerate an already productive open development process by intensifying communication and feedback cycles for programmers and researchers. This process will also involve an existing non-profit - organisation of Python firms to bind business communities into the rapid - development of a unique runtime environment. Technically, the project + organisation of Python firms to bind business communities into research + and implementation of a unique runtime environment. Technically, the project will refine and implement innovative approaches to language implementation, based on object spaces and abstract interpretation. @@ -31,4 +31,4 @@ respects the simplicity of the underlying language. In addition, the project will document and refine existing open source development models in the Python community. Although targetted principally at Python, most - of the techniques will also be applicable to other high level languages. + of the research results will be applicable to other high level languages. From pedronis at codespeak.net Tue Oct 14 13:50:51 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 13:50:51 +0200 (MEST) Subject: [pypy-svn] rev 1893 - pypy/trunk/doc/funding Message-ID: <20031014115051.36A6E5A1EE@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 13:50:49 2003 New Revision: 1893 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: typo Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Tue Oct 14 13:50:49 2003 @@ -207,7 +207,7 @@ technical processes more than general corporate management. **Beatrice D?ring** has experience from leadership situations in projects -as well as in lineorganisations since 1998. During four years she was +as well as in line organisations since 1998. During four years she was a part of a management team of five people, leading teams of 5 to 14 people. As a leader, Beatrice was responsible for coaching, motivating and developing her personnel. From pedronis at codespeak.net Tue Oct 14 13:57:00 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 13:57:00 +0200 (MEST) Subject: [pypy-svn] rev 1894 - pypy/trunk/doc/funding Message-ID: <20031014115700.E8EE85A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 13:57:00 2003 New Revision: 1894 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: typos Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Tue Oct 14 13:57:00 2003 @@ -15,16 +15,16 @@ presents a new paradigm how people can work together**. This is an efficient countermeasure to the perceived European "weak culture -of tranferring and exploiting university research results" (SWOT table from +of transferring and exploiting university research results" (SWOT table from 'IST Advisory Group: Software technologies, embedded systems and distributed systems: A European strategy towards an Ambient Intelligent environment'). Python as a language "for everybody" ++++++++++++++++++++++++++++++++++++ -The european industry as well as many developers are not interested in +The European industry as well as many developers are not interested in yet another new language. Instead our project will produce an -extremely flexible and performant development platform around the +extremely flexible and performing development platform around the Python programming language. Much anecdotal, and some empirical, evidence suggests that Python is one of the easiest programming languages to learn and is one of the languages in which one can code @@ -39,13 +39,13 @@ language implementation. -A development platform suited for tommorow's European industry +A development platform suited for tomorrow's European industry ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ The EU is interested in **software technologies that are reliable, pervasive, interoperable and can be adapted to accommodate new applications and services**. This is exactly the focus of our project. -With some unique approaches to building a highly performant and +With some unique approaches to building a highly performing and productive development platform we will further innovation and interoperability. @@ -67,15 +67,15 @@ Python is the most widely used European-designed computer language. Its development started in 1990, at CWI, Centrum voor Wiskunde en Informatica, the National Research Institute for Mathematics and -Computer Science in the Netherlands, it will strenghten our leadership +Computer Science in the Netherlands, it will strengthen our leadership in the area of innovative language design, and increase world-wide awareness of this fact. With funding from the EU we can bring some key python developers to Europe. We believe that PyPy presents a **unique opportunity to bring -considerable market- und mind share with respect to development tools +considerable market- and mind share with respect to development tools and environments back to Europe**. The many individuals and companies -involved with the project are deeply entagled with the opensource +involved with the project are deeply entangled with the opensource community and businesses. Python and PyPy in particular provide a viable alternative to American closed source language monopolies, while increasing innovation and competitiveness in European businesses @@ -90,7 +90,7 @@ solving 'trust and confidence' problems +++++++++++++++++++++++++++++++++++++++ -The IST thematic priority will contribute directly to realising +The IST thematic priority will contribute directly to realizing European policies for the knowledge society as agreed at the Lisbon Council of 2000, the Stockholm Council of 2001, the Seville Council of 2002, and as reflected in the e-Europe Action Plan. @@ -110,7 +110,7 @@ Moreover, Python is an extremely readable language. Readability was and remains one of its main design goals. This makes maintaining Python programs -substatially easier than similar program in less readable languages. It is the +substantially easier than similar program in less readable languages. It is the maintainability of computer programs which most directly effects their actual and perceived reliability and encourages intelligent usage. @@ -121,7 +121,7 @@ This second form of trust is far more durable and useful. -Stengthening social cohesion +Strengthening social cohesion ++++++++++++++++++++++++++++ Social cohesion is strengthened when technological advances are no @@ -151,11 +151,11 @@ Since SMEs are the main engines for innovation, growth, and competitiveness in the IT sector, by supporting these SMEs, and improving the language they use to develop one can directly have a positive effect on competitiveness. -Moreover, syngeries can be developed between the SMEs and academia, and SME +Moreover, synergies can be developed between the SMEs and academia, and SME and large industrial players. Disseminating knowledge to these SMEs is a primary goal of this proposal, and a major focus of our efforts. They are poised to fully exploit the new language implementation because they will be -among its developers, and beneficiaries of a focussed effort in +among its developers, and beneficiaries of a focused effort in knowledge dissemination. Contribution to EC Policies From tismer at codespeak.net Tue Oct 14 14:35:33 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 14:35:33 +0200 (MEST) Subject: [pypy-svn] rev 1895 - pypy/trunk/doc/funding/makedoc Message-ID: <20031014123533.AD4FC5A179@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 14:35:30 2003 New Revision: 1895 Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/makedoc/part_b.sxw Log: new PDF, no real formatting, just a snapshot Modified: pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Tue Oct 14 14:44:43 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 14:44:43 +0200 (MEST) Subject: [pypy-svn] rev 1896 - pypy/trunk/doc/funding Message-ID: <20031014124443.D998D5A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 14:44:42 2003 New Revision: 1896 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: To successfully disseminate knowledge from the PyPy project, the project needs to have good steadfast routines for documenting and interacting with the project >stakeholders<. Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Tue Oct 14 14:44:42 2003 @@ -325,7 +325,7 @@ To successfully disseminate knowledge from the PyPy project, the project needs to have good steadfast routines for documenting and interacting with -the project. The project management team (project manager and +the project stakeholders. The project management team (project manager and assisting project manager) will be responsible for overseeing dissemination tasks and activities. From hpk at codespeak.net Tue Oct 14 14:47:41 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 14:47:41 +0200 (MEST) Subject: [pypy-svn] rev 1897 - pypy/trunk/doc/funding Message-ID: <20031014124741.995485A1EE@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 14:47:40 2003 New Revision: 1897 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: fixed small ReST typo Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Tue Oct 14 14:47:40 2003 @@ -122,7 +122,7 @@ Strengthening social cohesion -++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++ Social cohesion is strengthened when technological advances are no longer the exclusive domain of a technological or commercial elite, From lac at codespeak.net Tue Oct 14 15:05:05 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 15:05:05 +0200 (MEST) Subject: [pypy-svn] rev 1898 - pypy/trunk/doc/funding Message-ID: <20031014130505.4D7CE5A1EE@thoth.codespeak.net> Author: lac Date: Tue Oct 14 15:05:04 2003 New Revision: 1898 Added: pypy/trunk/doc/funding/wirth.lean.pdf (contents, props changed) Log: Nicolas Wirth, a plea for lean software Added: pypy/trunk/doc/funding/wirth.lean.pdf ============================================================================== Binary file. No diff available. From lac at codespeak.net Tue Oct 14 15:13:33 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 15:13:33 +0200 (MEST) Subject: [pypy-svn] rev 1899 - pypy/trunk/doc/funding Message-ID: <20031014131333.2C0075A1EE@thoth.codespeak.net> Author: lac Date: Tue Oct 14 15:13:32 2003 New Revision: 1899 Added: pypy/trunk/doc/funding/agile_can_scale.pdf Log: First use of the word Sprint, more than 10 years ago. These Sprints are from Scrum, and therefore 1 month long. In case we think we need a methodological reference. Laura Added: pypy/trunk/doc/funding/agile_can_scale.pdf ============================================================================== Files (empty file) and pypy/trunk/doc/funding/agile_can_scale.pdf Tue Oct 14 15:13:32 2003 differ From lac at codespeak.net Tue Oct 14 17:05:37 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 17:05:37 +0200 (MEST) Subject: [pypy-svn] rev 1900 - pypy/trunk/doc/funding Message-ID: <20031014150537.5CDCE5A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 17:05:36 2003 New Revision: 1900 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: took out section we don't need, and added more about that we want to document our process. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 17:05:36 2003 @@ -609,12 +609,18 @@ need 2 programmers for 2 weeks to do this' is feasible, because they will already be in the loop, aware of what we are doing. -Overall Financial Plan ----------------------- - -Show that the overall financial plan for the project is adequate. -FIXME ALASTAIR: Write this section. - +As part of this project, we intend to document our creative process in +the hope that it will be picked up throughout the Open Source community +as an effective way to work, and one that is compatible with the EU's +Funding Programmes. Right now there is considerable desire on the part +of Open Source developers to become involved with EU projects, but too +little experience. The process seems cumbersome, and overweildy for +those people who are used to more Agile methods. There is great interest +in finding an acceptable way to respond to calls and provide enough +accountability to suit the EC, while enough flexibility to suit the +Agile developers. We believe we have found such a way, and are very +anxious to prove it so, and then spread the message so that other +Agile developers can benefit from our experience. STREP Project Effort Form ------------------------- From lac at codespeak.net Tue Oct 14 17:23:20 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 17:23:20 +0200 (MEST) Subject: [pypy-svn] rev 1901 - pypy/trunk/doc/funding Message-ID: <20031014152320.4CBF55A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 17:23:19 2003 New Revision: 1901 Modified: pypy/trunk/doc/funding/endorsements.asc Log: add endorsement from Itamar Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Tue Oct 14 17:23:19 2003 @@ -22,6 +22,18 @@ Martijn Faassen, Infrae Netherlands +- + I am one of the main developers of the open source Twisted networking + framework, which is used by organizations ranging from NASA and + California state agencies to individuals and companies in the US, Italy, + Sweden, France and the Netherlands. I would like to see PyPy succeed as + the result would be a platform that is far superior to competing + software platforms, while still being open and not tied to the fortunes + of one or two American corporations. + + Itamar Shtull-Trauring + Chief Technology Architect, Zoteca + - As a vendor of development tools for Python programmers, we support PyPy From jacob at codespeak.net Tue Oct 14 17:30:09 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 17:30:09 +0200 (MEST) Subject: [pypy-svn] rev 1902 - pypy/trunk/doc/funding Message-ID: <20031014153009.428305A179@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 17:30:07 2003 New Revision: 1902 Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp12_validations.txt pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Log: Numbered deliverables. Modified: pypy/trunk/doc/funding/B6.7.wp01_management.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp01_management.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp01_management.txt Tue Oct 14 17:30:07 2003 @@ -42,10 +42,10 @@ **Deliverables** -- Collection and monitoring of reports -- Report to EU -- Organise meetings -- Create and maintain internal web site +- D01.1 Collection and monitoring of reports +- D01.2 Report to EU +- D01.3 Organise meetings +- D01.4 Create and maintain internal web site .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp02_maintenance.txt Tue Oct 14 17:30:07 2003 @@ -62,15 +62,13 @@ **Deliverables** -- configuring, installation of all development tools - (subversion, apache2, mailman, backup, roundup, ...) +- D02.1 configuring, installation of all development tools (subversion, apache2, mailman, backup, roundup, ...) -- http-server to present runtime/introspection information - aiding debugging and understanding of PyPy internals +- D02.2 http-server to present runtime/introspection information aiding debugging and understanding of PyPy internals -- several website revisions +- D02.3 several website revisions -- automated (unit-)testing framework with html/pdf reports +- D02.4 automated (unit-)testing framework with html/pdf reports .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Tue Oct 14 17:30:07 2003 @@ -55,8 +55,8 @@ **Deliverables** -- A version of PyPy that supports a subset of the CPython API. -- A guide describing the porting of C extensions to PyPy. +- D03.1 A version of PyPy that supports a subset of the CPython API. +- D03.2 A guide describing the porting of C extensions to PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Tue Oct 14 17:30:07 2003 @@ -55,8 +55,8 @@ **Deliverables** -- DL01: First partial Python Implementation running on top of CPython. -- DL02: Complete Python implementation running on top of CPython. +- D04.1 First partial Python Implementation running on top of CPython. +- D04.2 Complete Python implementation running on top of CPython. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Tue Oct 14 17:30:07 2003 @@ -57,8 +57,8 @@ **Deliverables** -- Tool chain for translating and compiling arbitrary RPython programs. -- A compiled, self-contained version of PyPy. +- D05.1 Tool chain for translating and compiling arbitrary RPython programs. +- D05.2 A compiled, self-contained version of PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Tue Oct 14 17:30:07 2003 @@ -57,8 +57,8 @@ **Deliverables** -- DL??? Publication of statistics. -- DL??? Publication of novel heuristic techniques. +- D06.1 Publication of statistics. +- D06.2 Publication of novel heuristic techniques. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt Tue Oct 14 17:30:07 2003 @@ -53,8 +53,8 @@ **Deliverables** -- DL??? A processor back-end supporting Intel(tm) i386 and PowerPC. -- DL??? A Just-In-Time compiler for PyPy. +- D08.1 A processor back-end supporting Intel(tm) i386 and PowerPC. +- D08.2 A Just-In-Time compiler for PyPy. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Tue Oct 14 17:30:07 2003 @@ -49,12 +49,9 @@ **Deliverables** -- DL??? Implementation of constraint satisfaction engine and - inference engine in PyPy +- D09.1 Implementation of constraint satisfaction engine and inference engine in PyPy -- DL??? Assessment of benefits obtained from using PyPy over - current tools to further develop Semantic Web projects - at Logilab and DFKI. +- D09.2 Assessment of benefits obtained from using PyPy over current tools to further develop Semantic Web projects at Logilab and DFKI. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Tue Oct 14 17:30:07 2003 @@ -52,11 +52,9 @@ **Deliverables** -- DL??? Implementation of aspect-oriented programming - capabilities in PyPy +- D10.1 Implementation of aspect-oriented programming capabilities in PyPy -- DL??? Implementation of design-by-contract and advanced - static checking capabilities. +- D10.2 Implementation of design-by-contract and advanced static checking capabilities .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Tue Oct 14 17:30:07 2003 @@ -53,10 +53,7 @@ **Deliverables** -- DL?? Minimal interpreter suitable for embedded devices. Evaluation - report to Axis Communication on testresults of performance of - minimal interpreter on Axis hardware- DL??? Minimal interperter - suitable for embedded devices. +- D11.1 Minimal interpreter suitable for embedded devices. Evaluation report to Axis Communication on testresults of performance of minimal interpreter on Axis hardware- DL??? Minimal interperter suitable for embedded devices. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp12_validations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp12_validations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp12_validations.txt Tue Oct 14 17:30:07 2003 @@ -53,14 +53,11 @@ **Deliverables** -- D?? A PyPy version which supports secure restricted execution of - arbitrary Python programs +- D12.1 A PyPy version which supports secure restricted execution of arbitrary Python programs -- D?? A PyPy version which supports distributed execution of - arbitrary Python programs +- D12.2 A PyPy version which supports distributed execution of arbitrary Python programs -- D?? A PyPy version which supports persistent execution of - arbitrary Python programs +- D12.3 A PyPy version which supports persistent execution of arbitrary Python programs .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Tue Oct 14 17:30:07 2003 @@ -49,11 +49,8 @@ **Deliverables** -- DL01: A release of PyPy with all available optimization and runtime features. - . -- DL02: a build- and configuration tool that allows to build custom PyPy versions - suitable for specialized environments like small or very large computing - devices. +- D13.1 A release of PyPy with all available optimization and runtime features +- D13.2 A build- and configuration tool that allows to build custom PyPy versions suitable for specialized environments like small or very large computing devices. .. include:: wp-tableend.asc @@ -61,7 +58,8 @@ **Milestones and Expected Result** -A stable release of PyPy enabling a wide range of users to experiment and develop -using it as a flexible and highly-optimizable Python implementation. +- A stable release of PyPy enabling a wide range of users to + experiment and develop using it as a flexible and highly-optimizable + Python implementation. .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Tue Oct 14 17:30:07 2003 @@ -62,7 +62,9 @@ **Deliverables** -Detailed list to be determined. +- D14.1 Documentation of the development process + +Further deliverables to be determined. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From jacob at codespeak.net Tue Oct 14 17:34:29 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 17:34:29 +0200 (MEST) Subject: [pypy-svn] rev 1903 - pypy/trunk/doc/funding Message-ID: <20031014153429.996745A179@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 17:34:28 2003 New Revision: 1903 Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Log: Unifying formatting between WPs. Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Tue Oct 14 17:34:28 2003 @@ -65,4 +65,6 @@ **Milestones and Expected Result** +- Better performance for all non-trivial executed programs + .. include:: wp-tableend.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Tue Oct 14 17:34:28 2003 @@ -60,7 +60,7 @@ **Milestones and Expected Result** -Prototype program running on embedded hardware. -Accepted evaluation report from Axis Communication on evaluation results. +- Prototype program running on embedded hardware. +- Accepted evaluation report from Axis Communication on evaluation results. .. include:: wp-tableend.asc From pedronis at codespeak.net Tue Oct 14 17:37:03 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 17:37:03 +0200 (MEST) Subject: [pypy-svn] rev 1904 - pypy/trunk/doc/funding Message-ID: <20031014153703.C696D5A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 17:37:02 2003 New Revision: 1904 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: more structure to Current State of the Art Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 17:37:02 2003 @@ -81,13 +81,8 @@ Current State of The Art ------------------------------ -Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a -researched attempt at achieving modularity for interpreters. They have -not been tried on something as large as Python, however, as the approach is hard -to relate to for programmers accustomed to more conventional Object-Oriented -(OO) programming and requires sophisticated partial evaluation to remove the -monadic overhead. Monad transformers can also be used to modularize -continuation passing, exceptions and other control flow aspects. +Intepreters Modularity +++++++++++++++++++++++++ In its basics, the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running @@ -100,6 +95,18 @@ translator, the code and Object Spaces encapsulating the core language and its semantics and further pluggable modules for both. +Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a +researched attempt at achieving modularity for interpreters. They have +not been tried on something as large as Python, however, as the approach is hard +to relate to for programmers accustomed to more conventional Object-Oriented +(OO) programming and requires sophisticated partial evaluation to remove the +monadic overhead. Monad transformers can also be used to modularize +continuation passing, exceptions and other control flow aspects. + + +JITs and Dynamic Optimisation Complexity +++++++++++++++++++++++++++++++++++++++++++ + JIT compilers have been reasonably well studied; an account of their history is given in [A03]_ . But actually writing a JIT compiler for a given language is generally a major task [WAU99]_ . @@ -287,4 +294,4 @@ Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf -.. file = kiczales97aspectoriented.pdf \ No newline at end of file +.. file = kiczales97aspectoriented.pdf From hpk at codespeak.net Tue Oct 14 17:53:35 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 17:53:35 +0200 (MEST) Subject: [pypy-svn] rev 1905 - pypy/trunk/doc/funding Message-ID: <20031014155335.0819D5A179@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 17:53:34 2003 New Revision: 1905 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Log: brought B6.7.wp14_documentation into the usual form (tasks+ deliverables numbered with Jacobs scheme) and added reporting about "Sprint Driven development" prominently in B6.0_detailed_implemetnation. please check. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Tue Oct 14 17:53:34 2003 @@ -426,7 +426,12 @@ communities. Reports and summaries will be posted to the relevant mailing lists as well as archived on both the PyPy and the Python Business Forum website for universal availability. WP14_ is to support this process at all -levels. +levels. + +Moreover, WP14_ will produce a joint report about agile methodologies +employed by the project. In particular, any "lessons learned" about Sprint +Driven development will be analysed in cooperation with all participants, +the technical and management board. Python community members will be encouraged to keep current and get involved with the project, while community involvement and feedback on technical Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Tue Oct 14 17:53:34 2003 @@ -22,55 +22,53 @@ **Objectives** -Providing ongoing documentation throughout the whole project. - -Keeping external groups informed of the ongoings in PyPy. +Providing ongoing documentation throughout the whole project. +Supporting the dissemination process at all levels. Analyse and document +"Sprint driven development" and the agile development methods of the project. +Report to the Commission. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Description of work** -Each "sprint", as well as the regular progress of non-sprint -development, will produce technical novelties, some of which may -afford immediate use and adoption of the novel technologies being -developed. WP 14 will periodically produce short reports on the result -of "sprints" and other development. Said reports will be posted to the -relevant mailing lists as well as archived on both the PyPy and the -Python Business Forum website for universal availability. - -Python community members will be encouraged to keep current with the -project through the short reports, while community feedback on -technical developments will be gathered on the website and mailing -lists to be used by the appropriate project areas to further enhance -the project's development efforts, in true Open Source spirit. - -In addition to the periodically produced short reports, WP 14 will on -occasion present longer, detailed reports to the Commission, and to -scientific committees advising the Commission on technical -issues. Technical papers and talks will be submitted to scientific -conferences which deal with the subject matters covered by the -project. When the advancement of the project warrants it, WP 14 will -also publish "popularization" articles and tutorial materials to help -other practitioners of software development to make practical use of -the project's results. Diagrams and schematics will be provided to -illustrate fundamental concepts, as appropriate to the audience and -the subject matter. +**Task 1** + +Support the dissemination process at all levels. Make sure that +all "sprints" are properly reported and archived for public access. +In cooperation with all other participants, present a detailed joint report +to the commission about agile methodologies employed by the project. + +**Task 2** + +Provide longer, detailed reports to the commision and scientific committees +advising the Commission on technical issues. + +**Task 3** + +When the advancement of the project warrants it, publish "popularization" +articles and tutorial materials to help other practitioners of software +development to make practical use of the project's results. Diagrams and +schematics will be provided to illustrate fundamental concepts, as appropriate +to the audience and the subject matter. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Deliverables** -- D14.1 Documentation of the development process - -Further deliverables to be determined. +-- D14.1 report about Milestone/Phase 1 +-- D14.2 report about Milestone/Phase 2 +-- D14.3 report about Milestone/Phase 3 +-- D14.4 Documentation of the development process and "Sprint driven development" in particular. .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc **Milestones and Expected Result** -- Good documentation and dissemination +Good documentation and dissemination. A better understanding how +research and development can be accelerated through agile methodologies +and "Sprint Driven Development" and how the PyPy project achieved its goals. .. include:: wp-tableend.asc From tismer at codespeak.net Tue Oct 14 17:54:07 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 17:54:07 +0200 (MEST) Subject: [pypy-svn] rev 1906 - pypy/trunk/doc/funding Message-ID: <20031014155407.A591B5A179@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 17:54:05 2003 New Revision: 1906 Added: pypy/trunk/doc/funding/psycoguide.pdf (contents, props changed) Log: added PDF version of psycoguide. Maybe we should move all appendix PDFs into a subfolder? Added: pypy/trunk/doc/funding/psycoguide.pdf ============================================================================== Binary file. No diff available. From pedronis at codespeak.net Tue Oct 14 17:59:04 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 17:59:04 +0200 (MEST) Subject: [pypy-svn] rev 1907 - pypy/trunk/doc/funding Message-ID: <20031014155904.F1BD15A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 17:59:04 2003 New Revision: 1907 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: monadic interp have been used for DSLs. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 17:59:04 2003 @@ -97,7 +97,8 @@ Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have -not been tried on something as large as Python, however, as the approach is hard +not been tried on something as large as Python but in the contex of DSLs, +however, as the approach is hard to relate to for programmers accustomed to more conventional Object-Oriented (OO) programming and requires sophisticated partial evaluation to remove the monadic overhead. Monad transformers can also be used to modularize From pedronis at codespeak.net Tue Oct 14 18:00:34 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 18:00:34 +0200 (MEST) Subject: [pypy-svn] rev 1908 - pypy/trunk/doc/funding Message-ID: <20031014160034.92CA95A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 18:00:33 2003 New Revision: 1908 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: typo. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 18:00:33 2003 @@ -97,7 +97,7 @@ Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have -not been tried on something as large as Python but in the contex of DSLs, +not been tried on something as large as Python but in the context of DSLs, however, as the approach is hard to relate to for programmers accustomed to more conventional Object-Oriented (OO) programming and requires sophisticated partial evaluation to remove the From lac at codespeak.net Tue Oct 14 18:04:52 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 18:04:52 +0200 (MEST) Subject: [pypy-svn] rev 1909 - pypy/trunk/doc/funding Message-ID: <20031014160452.A73FD5A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 18:04:51 2003 New Revision: 1909 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Put in 'why Strakt is involved' per Johan Lindberg's suggestion. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 18:04:51 2003 @@ -418,8 +418,17 @@ Python Software foundation, Tim Peters is also responsible for the Intellectual Property of the existing Python language. -With 12 full time and 6 part time employees, Strakt is an SME -representative. +With 13 full time and 6 part time employees, Strakt is an SME +representative. Strakt is particularly interested in this project +because it is doubtful that its Framework system, CAPS, can scale from +several hundred thousand to several million concurrent users unless +one of two things happen. Either parts of CAPS are rewritten in C, +which is faster, or Python itself becomes faster. The second +alternative is much to be preferred. Participation will also enhance +Strakt's ability to attract the best Python programmers, and add to +it's reputation in the Open Source community. Strakt's financial +backer and board of Directors enthuthiastically endorse participation +in this project as a brilliant strategic move. Changemaker +++++++++++ From tismer at codespeak.net Tue Oct 14 18:05:30 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 18:05:30 +0200 (MEST) Subject: [pypy-svn] rev 1910 - pypy/trunk/doc/funding/proposal Message-ID: <20031014160530.3EA965A179@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 18:05:28 2003 New Revision: 1910 Added: pypy/trunk/doc/funding/proposal/ Log: common folder for all proposal pdf files. (and only those) From pedronis at codespeak.net Tue Oct 14 18:10:48 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 18:10:48 +0200 (MEST) Subject: [pypy-svn] rev 1911 - pypy/trunk/doc/funding Message-ID: <20031014161048.5EAE65A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 18:10:47 2003 New Revision: 1911 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: added reference to Jalapeno. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 18:10:47 2003 @@ -109,8 +109,13 @@ ++++++++++++++++++++++++++++++++++++++++++ JIT compilers have been reasonably well studied; an account of their -history is given in [A03]_ . But actually writing a JIT compiler for -a given language is generally a major task [WAU99]_ . +history is given in [A03]_ . But actually writing a JIT compiler for a +given language is generally a major task [WAU99]_ . For example the +recent Jalapeno Java VM [AFGHS00] and its compilers, although being in +written in Java, are a complex architecture, requiring fine tuning, +using runtime sampling to assess at runtime the dynamic call graph to +drive inlining. + Different techniques to ease this path have been recently explored: * To implement a dynamic language in a flexible way, it can be written @@ -262,6 +267,9 @@ 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf +.. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, + "Adaptive optimization in the Jalapeno JVM. In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. + .. file = oopsla-vm-wkshp.pdf .. [R03] Armin Rigo, http://psyco.sourceforge.net From tismer at codespeak.net Tue Oct 14 18:11:21 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 18:11:21 +0200 (MEST) Subject: [pypy-svn] rev 1912 - in pypy/trunk/doc/funding: . makedoc proposal Message-ID: <20031014161121.757EE5A179@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 18:11:20 2003 New Revision: 1912 Added: pypy/trunk/doc/funding/proposal/part_b.pdf (props changed) - copied unchanged from rev 1904, pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/proposal/psycoguide.pdf (props changed) - copied unchanged from rev 1906, pypy/trunk/doc/funding/psycoguide.pdf pypy/trunk/doc/funding/proposal/wirth.lean.pdf (props changed) - copied unchanged from rev 1904, pypy/trunk/doc/funding/wirth.lean.pdf Removed: pypy/trunk/doc/funding/makedoc/part_b.pdf pypy/trunk/doc/funding/psycoguide.pdf pypy/trunk/doc/funding/wirth.lean.pdf Log: moved things into proposal folder Deleted: /pypy/trunk/doc/funding/makedoc/part_b.pdf ============================================================================== Binary file. No diff available. Deleted: /pypy/trunk/doc/funding/psycoguide.pdf ============================================================================== Binary file. No diff available. Deleted: /pypy/trunk/doc/funding/wirth.lean.pdf ============================================================================== Binary file. No diff available. From arigo at codespeak.net Tue Oct 14 18:11:23 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 14 Oct 2003 18:11:23 +0200 (MEST) Subject: [pypy-svn] rev 1913 - pypy/trunk/doc/funding Message-ID: <20031014161123.36DEB5A179@thoth.codespeak.net> Author: arigo Date: Tue Oct 14 18:11:22 2003 New Revision: 1913 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: More careful usage of the words "translation" and "translator". Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Tue Oct 14 18:11:22 2003 @@ -53,7 +53,7 @@ in Python. It must be entierely compatible with the language specification. It consists of the following major parts: -- A *bytecode compiler,* which translates Python source code into an internal +- A *bytecode compiler,* which inputs Python source code and outputs an internal intermediate representation, the *bytecode.* - A *bytecode interpreter,* which interprets bytecodes and manages the @@ -77,7 +77,7 @@ C that are either standard or widely-used in CPython. (The Python Standard Library is already mostly written in Python, so that the problem only concerns C-coded extension modules.) For each extension module, two strategies can be -followed: either the module is translated into a (regular) Python module, or +followed: either the module is rewritten as a (regular) Python module, or it is written as an extension module of the PyPy interpreter (i.e. in Python too, but at the level of the interpreter.) @@ -102,8 +102,9 @@ of a compilation process. We are giving translation an innovative emphasis (and thus a whole -workpackage, WP05_) in the project. It is not merely an RPython-to-C -translator; it is an essential part of our flexibility goals. Numerous aspects +workpackage, WP05_) in the project. It is not only an RPython-to-C +translator; it is a source-to-source transformer, and as such an +essential part of our flexibility goals. Numerous aspects that used to be design decisions influencing the whole source code of the current CPython have by now become merely customizable behaviour of the translator. Indeed, instead of hard-coding such design decisions, we will @@ -205,12 +206,12 @@ this idea, which has been first tried for Python in the Stackless project. - Generating a JIT compiler. Existing work in the Psyco project has shown that - it would actually be possible to mostly generate a JIT compiler instead of + it would actually be possible to generate the most part of a JIT compiler instead of having to write it from scratch. The basic idea is again abstract interpretation: instead of actually performing any operation between two objects, we *generate* machine code that can perform the required operation. Again, no change to the bytecode interpreter is needed; all we need is to - translate individual operations to processor instructions, together with a + turn individual operation orders into processor instructions, together with a supporting runtime systems. This is defined by WP08_. In dynamic languges, the truth behind JIT compiling is a bit more involved @@ -224,10 +225,13 @@ the RPython source (i.e. the bytecode interpreter and the standard Object Space). We plan to write the dynamic part of the JIT as a plug-in to the translator: instead of generating C code that is the direct translation of -PyPy, we will generate C code that itself generates machine code. This extra -indirection has large benefits: the operations the JIT need to be taught about -are only the ones allowed in RPython. The resulting piece of C code will thus -be the JIT-enabled version of PyPy. +PyPy, we will generate C code (with the translator) that itself generates +machine code (by directly emitting it as bytes into memory). This extra +indirection has large benefits: the operations the JIT need to be manually taught +about for the generation of machine code are only the ones allowed in RPython. +In other words, we only need to design a JIT supporting the low-level operations +of RPython; still, the translated piece of C code that we obtain is a JIT-enabled +version of PyPy that supports the whole of the Python language. Other research aspects From pedronis at codespeak.net Tue Oct 14 18:16:03 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 18:16:03 +0200 (MEST) Subject: [pypy-svn] rev 1914 - pypy/trunk/doc/funding Message-ID: <20031014161603.9602F5A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 18:16:02 2003 New Revision: 1914 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: details on Java Smalltalk on top of Self. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 18:16:02 2003 @@ -111,7 +111,7 @@ JIT compilers have been reasonably well studied; an account of their history is given in [A03]_ . But actually writing a JIT compiler for a given language is generally a major task [WAU99]_ . For example the -recent Jalapeno Java VM [AFGHS00] and its compilers, although being in +recent Jalapeno Java VM [AFGHS00]_ and its compilers, although being in written in Java, are a complex architecture, requiring fine tuning, using runtime sampling to assess at runtime the dynamic call graph to drive inlining. @@ -123,12 +123,13 @@ bytecodes for an existing virtual machine. If the virtual machine is already equipped with state-of-the-art JIT compilation, it is possible to leverage its benefits to the new language. This path is - not only much shorter than designing a complete custom JIT compiler, but it - is also easier to maintain and evolve. This idea is explored for the - Self virtual machine in [WAU99]_ . As pointed out in + not only much shorter than designing a complete custom JIT compiler, + but it is also easier to maintain and evolve. This idea is explored + for the Self virtual machine in [WAU99]_, building on top of it + experimental Java and Smalltalk implementations . As pointed out in that paper, some source language features may not match any of the - target virtual machine features. When this issue arises, we are - left with the hard problem of refactoring an efficient JIT compiler-based + target virtual machine features. When this issue arises, we are left + with the hard problem of refactoring an efficient JIT compiler-based virtual machine. * Using a completely different approach, to make it easier to derive a JIT From lac at codespeak.net Tue Oct 14 18:19:51 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 18:19:51 +0200 (MEST) Subject: [pypy-svn] rev 1915 - pypy/trunk/doc/funding Message-ID: <20031014161951.062605A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 18:19:50 2003 New Revision: 1915 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Looks like Michael Hudson gets to be the Rotten Egg. Nice to have you on board, Michael, and hope that PBF transfer gets here soon :-) :-) :-) Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Tue Oct 14 18:19:50 2003 @@ -366,6 +366,15 @@ since 1997. Secretary of the Python Business Forum. Chairman of the "EuroPython Science Track". +**Michael Hudson** was born in 1978 in the United Kingdom. He holds a +first class degree in Mathematics from the University of Cambridge and +took the Certificate of Advanced Study in Mathematics at the same +institution. He is currently studying for a PhD in Algebra at the +University of Bristol. He has been a member of the wider Python +community since 1998 and has had commit rights to the Python core +since August 2001. He was release manager for the 2.2.1 release and +made many contributions of code over the years. He was a track chair +at EuroPython 2003 and is a member of the PSF and the PBF. Quality of partnership, involvement of users and SMEs ----------------------------------------------------- From hpk at codespeak.net Tue Oct 14 18:27:31 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 18:27:31 +0200 (MEST) Subject: [pypy-svn] rev 1916 - pypy/trunk/doc/funding Message-ID: <20031014162731.AF9E25A179@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 18:27:30 2003 New Revision: 1916 Modified: pypy/trunk/doc/funding/abstract.asc Log: modified the last line of the abstract to claim that platform/research will be applicable to other vhll. got the number of characters down to 1967 by refactoring the indentation :-) Modified: pypy/trunk/doc/funding/abstract.asc ============================================================================== --- pypy/trunk/doc/funding/abstract.asc (original) +++ pypy/trunk/doc/funding/abstract.asc Tue Oct 14 18:27:30 2003 @@ -1,34 +1,34 @@ - Main goals +Main goals - The project will research and implement a flexible, configurable and - performant version of Python, a popular Free/Open Source programming language. - Much anecdotal, and some empirical, evidence suggests that Python is one - of the easiest programming languages to learn and is one of the languages - in which one can code up a given algorithm the fastest. The project - aims to bring this highly productive language to a wider range of - platforms and devices by providing simple means to build a highly - customized language version. + The project will research and implement a flexible, configurable and + fast version of Python, a popular Free/Open Source programming language. + Much anecdotal, and some empirical, evidence suggests that Python is one + of the easiest programming languages to learn and is one of the languages + in which one can code up a given algorithm the fastest. The project + aims to bring this highly productive language to a wider range of + platforms, devices and users by providing simple means to build a highly + customized language version. - The approach +The approach - The project will achieve its goals principally by leveraging excellent - research and the strengths of Open Source developer communities. - In particular, it will explore and refine Sprint Driven Development, - an agile rapid development method pioneered by Python communities in - Europe. Sprints accelerate an already productive open development - process by intensifying communication and feedback cycles for programmers - and researchers. This process will also involve an existing non-profit - organisation of Python firms to bind business communities into research - and implementation of a unique runtime environment. Technically, the project - will refine and implement innovative approaches to language implementation, - based on object spaces and abstract interpretation. + The project will achieve its goals principally by leveraging excellent + research and the strengths of Open Source developer communities. + In particular, it will explore and refine Sprint Driven Development, + an agile rapid development method pioneered by Python communities in + Europe. Sprints accelerate an already productive open development + process by intensifying communication and feedback cycles for programmers + and researchers. This process will also involve an existing non-profit + organisation of Python firms to bind business communities into research + and implementation of a unique runtime environment. Technically, the project + will refine and implement innovative approaches to language implementation, + based on object spaces and abstract interpretation. - Concrete results +Concrete results - The new Python will maintain the semantics of the current implementation - but will be more portable, more easily customised and extended, more - efficient, and it will cover more programming paradigms in a way that - respects the simplicity of the underlying language. In addition, the - project will document and refine existing open source development models - in the Python community. Although targetted principally at Python, most - of the research results will be applicable to other high level languages. + The new Python will maintain the semantics of the current implementation but + will be more portable, more easily customised and extended, more efficient, + and it will cover more programming paradigms in a way that respects the + simplicity of the underlying language. In addition, the project will document + and refine existing open source development models in the Python community. + Although targetted principally at Python, all research results and the language + platform will be applicable to other Very High Level Languages. From jacob at codespeak.net Tue Oct 14 18:32:35 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 18:32:35 +0200 (MEST) Subject: [pypy-svn] rev 1917 - pypy/trunk/doc/funding Message-ID: <20031014163235.BA4D05A179@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 18:32:34 2003 New Revision: 1917 Modified: pypy/trunk/doc/funding/B6.6_deliverables_list.txt pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Log: The deliverables list. Modified: pypy/trunk/doc/funding/B6.6_deliverables_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.6_deliverables_list.txt (original) +++ pypy/trunk/doc/funding/B6.6_deliverables_list.txt Tue Oct 14 18:32:34 2003 @@ -12,13 +12,77 @@ ===== ===================================================== ===== ==== ==== -|dn| Deliverable title |dd| |na| |dl| +|dn| Deliverable sortformtitle |dd| |na| |dl| ===== ===================================================== ===== ==== ==== -D1 +D01.1 Collection and monitoring of reports 24 O PU ----- ----------------------------------------------------- ----- ---- ---- -D2 +D01.2 Report to EU 24 O PU ----- ----------------------------------------------------- ----- ---- ---- -D3 +D01.3 Organise meetings 24 O PU +----- ----------------------------------------------------- ----- ---- ---- +D01.4 Create and maintain internal web site 24 O PU +----- ----------------------------------------------------- ----- ---- ---- +D02.1 Configuring, installation of all development tools 24 O PU +----- ----------------------------------------------------- ----- ---- ---- +D02.2 Http-server to present runtime/introspection 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D02.3 Several website revisions 24 O PU +----- ----------------------------------------------------- ----- ---- ---- +D02.4 Automated (unit-)testing framework 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D03.1 A PyPy that supports a subset of the CPython API 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D03.2 A guide describing the porting of C extensions 24 R PU +----- ----------------------------------------------------- ----- ---- ---- +D04.1 Partial Python Implementation on top of CPython 9 P PU +----- ----------------------------------------------------- ----- ---- ---- +D04.2 Complete Python implementation on top of CPython 9 P PU +----- ----------------------------------------------------- ----- ---- ---- +D05.1 Tool chain for translating and compiling RPython 9 P PU +----- ----------------------------------------------------- ----- ---- ---- +D05.2 A compiled, self-contained version of PyPy 9 P PU +----- ----------------------------------------------------- ----- ---- ---- +D06.1 Publication of statistics 24 R PU +----- ----------------------------------------------------- ----- ---- ---- +D06.2 Publication of novel heuristic techniques 24 R PU +----- ----------------------------------------------------- ----- ---- ---- +D07.1 Support for Real-time massive parallelism 18 P PU +----- ----------------------------------------------------- ----- ---- ---- +D07.2 Report on optimisation results 19 R PU +----- ----------------------------------------------------- ----- ---- ---- +D08.1 A processor back-end supporting i386 and PowerPC 18 P PU +----- ----------------------------------------------------- ----- ---- ---- +D08.2 A Just-In-Time compiler for PyPy 18 P PU +----- ----------------------------------------------------- ----- ---- ---- +D09.1 Constraint satisfaction engine and inference engine 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D09.2 Assessment of benefits 24 R PU +----- ----------------------------------------------------- ----- ---- ---- +D10.1 Aspect-oriented programming capabilities in PyPy 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D10.2 Design-by-contract and static checking capabilities 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D11.1 Minimal interpreter suitable for embedded devices 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D11.2 Evaluation report to Axis Communication 24 R PU +----- ----------------------------------------------------- ----- ---- ---- +D12.1 Secure restricted execution of Python programs 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D12.2 Distributed execution of Python programs 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D12.3 Persistent execution of Python programs 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D13.1 A release with all optimization and runtime features 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D13.2 A build- and configuration tool 24 P PU +----- ----------------------------------------------------- ----- ---- ---- +D14.1 Report about Milestone/Phase 1 10 R PU +----- ----------------------------------------------------- ----- ---- ---- +D14.2 Report about Milestone/Phase 2 19 R PU +----- ----------------------------------------------------- ----- ---- ---- +D14.3 Report about Milestone/Phase 3 25 R PU +----- ----------------------------------------------------- ----- ---- ---- +D14.4 Documentation of the development process 24 R PU ===== ===================================================== ===== ==== ==== :DELETE:BEGIN Modified: pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp03_synchronisation.txt Tue Oct 14 18:32:34 2003 @@ -55,8 +55,8 @@ **Deliverables** -- D03.1 A version of PyPy that supports a subset of the CPython API. -- D03.2 A guide describing the porting of C extensions to PyPy. +- D03.1 A version of PyPy that supports a subset of the CPython API +- D03.2 A guide describing the porting of C extensions to PyPy .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Tue Oct 14 18:32:34 2003 @@ -55,8 +55,8 @@ **Deliverables** -- D04.1 First partial Python Implementation running on top of CPython. -- D04.2 Complete Python implementation running on top of CPython. +- D04.1 First partial Python Implementation running on top of CPython +- D04.2 Complete Python implementation running on top of CPython .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Tue Oct 14 18:32:34 2003 @@ -57,8 +57,8 @@ **Deliverables** -- D05.1 Tool chain for translating and compiling arbitrary RPython programs. -- D05.2 A compiled, self-contained version of PyPy. +- D05.1 Tool chain for translating and compiling arbitrary RPython programs +- D05.2 A compiled, self-contained version of PyPy .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp06_core_optimisations.txt Tue Oct 14 18:32:34 2003 @@ -57,8 +57,8 @@ **Deliverables** -- D06.1 Publication of statistics. -- D06.2 Publication of novel heuristic techniques. +- D06.1 Publication of statistics +- D06.2 Publication of novel heuristic techniques .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp07_translator_optimisations.txt Tue Oct 14 18:32:34 2003 @@ -57,8 +57,8 @@ **Deliverables** -- a version of PyPy that supports Real-time massive parallelism -- report on optimisation results submitted as publications +- D07.1 A version of PyPy that supports Real-time massive parallelism +- D07.2 Report on optimisation results submitted as publications .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp08_dynamic_optimisation.txt Tue Oct 14 18:32:34 2003 @@ -53,8 +53,8 @@ **Deliverables** -- D08.1 A processor back-end supporting Intel(tm) i386 and PowerPC. -- D08.2 A Just-In-Time compiler for PyPy. +- D08.1 A processor back-end supporting Intel(tm) i386 and PowerPC +- D08.2 A Just-In-Time compiler for PyPy .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Tue Oct 14 18:32:34 2003 @@ -51,7 +51,7 @@ - D09.1 Implementation of constraint satisfaction engine and inference engine in PyPy -- D09.2 Assessment of benefits obtained from using PyPy over current tools to further develop Semantic Web projects at Logilab and DFKI. +- D09.2 Assessment of benefits obtained from using PyPy over current tools to further develop Semantic Web projects at Logilab and DFKI .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp11_embed_in_hardware.txt Tue Oct 14 18:32:34 2003 @@ -53,7 +53,9 @@ **Deliverables** -- D11.1 Minimal interpreter suitable for embedded devices. Evaluation report to Axis Communication on testresults of performance of minimal interpreter on Axis hardware- DL??? Minimal interperter suitable for embedded devices. +- D11.1 Minimal interpreter suitable for embedded devices + +- D11.2 Evaluation report to Axis Communication on testresults of performance of minimal interpreter on Axis hardware .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc Modified: pypy/trunk/doc/funding/B6.7.wp14_documentation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp14_documentation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp14_documentation.txt Tue Oct 14 18:32:34 2003 @@ -57,10 +57,10 @@ **Deliverables** --- D14.1 report about Milestone/Phase 1 --- D14.2 report about Milestone/Phase 2 --- D14.3 report about Milestone/Phase 3 --- D14.4 Documentation of the development process and "Sprint driven development" in particular. +- D14.1 Report about Milestone/Phase 1 +- D14.2 Report about Milestone/Phase 2 +- D14.3 Report about Milestone/Phase 3 +- D14.4 Documentation of the development process and "Sprint driven development" in particular .. include:: wp-tableend.asc .. include:: wp-tablebegin.asc From jacob at codespeak.net Tue Oct 14 18:37:05 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 18:37:05 +0200 (MEST) Subject: [pypy-svn] rev 1918 - pypy/trunk/doc/funding Message-ID: <20031014163705.A58705A179@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 18:37:04 2003 New Revision: 1918 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: More numbers. Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From lac at codespeak.net Tue Oct 14 18:42:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 18:42:44 +0200 (MEST) Subject: [pypy-svn] rev 1919 - pypy/trunk/doc/funding Message-ID: <20031014164244.5C8075A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 18:42:43 2003 New Revision: 1919 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: Check that this doesn't make ReST insane. I am worried about the underlines from the mailing list Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Tue Oct 14 18:42:43 2003 @@ -51,7 +51,7 @@ ignored. Studies have shown that, while women who do enter CS enter with less experience, they demonstrate no less ability than their male counterparts. By breaking down the barriers to entry - noted above, Pypy will help lessen the gender gap, + noted above, PyPy will help lessen the gender gap, technologically, socially and economically. As an example of the benificial effects that Python already has on @@ -92,7 +92,7 @@ Nobody who uses a computer can avoid noticing how viruses, unsolicited email and computer attacks have made life difficult for computer -users. While Pypy is unable to solve such problems, it may mitigate +users. While PyPy is unable to solve such problems, it may mitigate them. There are 3 factors that affect this: 1. The ease of writing Python programs give the developers more time @@ -112,5 +112,90 @@ Other Policy related Issues ----------------------------- -We have not identified any other policy related issues. - +As we mentioned before, one of the greatest threats to European +competitiveness is its dependence upon proprietary closed source +software, mostly made in the United States. short-term threat of +dependedence upon your supplier was already discussed in section 3. + +There is another threat, which is more insidious, and more long term. +A good workman knows his tools. This is much more than the +theoretical knowledge of how his tools ought to work, according to +principles learned in school. The way car mechanics know how cars +work is distinctly different from what you would know if you had +attended classes on 'the principles of the internal combustion +engine'. + +Right now, in Europe, we don't have enough of the software equivalents +of car-mechanics. And most of them live in academia, where they know +the intimate details of languages that never get used in industrial +applications. They are the Formula-One race car mechanics of the +software world. While race car mechanics do serve a useful purpose, +we have a much greater need for people who know how to repair the +family car. + +It is not as if there is a shortage of people who would be interested +in learning such things, if the source were made available. Many +people have taken this step by learning how CPython does its stuff. +But still there is a barrier. If you want to know how CPython does +things, you need to learn C. C is a notoriously difficult language to +learn. + +But let us quote an article posted to the Python-in-Education +mailing list in its entirity. + + Date: Sun, 14 Sep 2003 11:52:05 -0400 + From: Arthur + To: edu-sig at python.org + Subject: [Edu-sig] re : If the PyPy Project ... + + List-Id: Python in education + + Terry - + + >Since I presume the goal of PyPy is to implement *Python* in Python, + >wouldn't the implementation language be rather insignificant to an + >end-user such as an educator? Why would it be "better" than CPython? + + For whatever reason, the complex built_in and the cmath module, implemented + in Python, are part of the early pypy codebase. As I had been spending some + time in the complex realm with PyGeo - a simple version of the complex + realm, as these things go - Laura's post gave me the impetus to try to + plugin the pypy implementations. + + Only got stuck on the typing issue. My code tests for + instance(object,complex). The pypy complexobject, unadorned, is a class - + and fails the test. But that leads me into a deeper look at some of the + pypy codebase, trying to understand a little bit of how this kind of issue + are to be dealt with. Not that I got there, yet - but I did seem to have an + avenue to explore I would not have with CPython - as someone who doesn't C, + and has no intention of trying, seriously, to do so. + + As someone living within the limits of having Python as my only real + language, I think that pypy should open things up for me considerably. It + will make Python, I believe, a more attractive educational language, because + it will make someone with a strong foundation in Python - as the language of + choice - a more self-sufficient programmer. + + Presumably - the point is - there will be less cases where the right + approach would be an extension module in C or C++, and a sense of + fundamental compromise should one not be equipped to go there. Many + thousands of folks - using VB and the like - already do involved, + highly performing real world applications and make nice livings doing + so, without being equipped to do C. I am thinking that pypy would put + Python more squarely in that "space". + + Is any of this so, or just hope? + + Art + + _______________________________________________ + Edu-sig mailing list + Edu-sig at python.org + http://mail.python.org/mailman/listinfo/edu-sig + ------------------------------------------------------ + +Here is somebody who is hoping we can give him a language he can +understand and use without learning C. He is the author of PyGeo, a +dynamic geometry laboratory and toolkit, commonly used by elementary +and high school teachers. This is where the future lies. Python is +already an excellent teaching language. PyPy will be a better one. From lac at codespeak.net Tue Oct 14 19:10:15 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 19:10:15 +0200 (MEST) Subject: [pypy-svn] rev 1920 - pypy/trunk/doc/funding Message-ID: <20031014171015.9D4565A179@thoth.codespeak.net> Author: lac Date: Tue Oct 14 19:10:12 2003 New Revision: 1920 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: saw in the checkins that I forgot a word. Decided to try to make something bold. let us see if this works... Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Tue Oct 14 19:10:12 2003 @@ -114,11 +114,11 @@ As we mentioned before, one of the greatest threats to European competitiveness is its dependence upon proprietary closed source -software, mostly made in the United States. short-term threat of +software, mostly made in the United States. The short-term threat of dependedence upon your supplier was already discussed in section 3. There is another threat, which is more insidious, and more long term. -A good workman knows his tools. This is much more than the +**A good workman knows his tools**. This is much more than the theoretical knowledge of how his tools ought to work, according to principles learned in school. The way car mechanics know how cars work is distinctly different from what you would know if you had From pedronis at codespeak.net Tue Oct 14 19:39:35 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 19:39:35 +0200 (MEST) Subject: [pypy-svn] rev 1921 - pypy/trunk/doc/funding Message-ID: <20031014173935.54B4A5A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 19:39:32 2003 New Revision: 1921 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: reference to similar work on OS modularity. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 19:39:32 2003 @@ -104,6 +104,12 @@ monadic overhead. Monad transformers can also be used to modularize continuation passing, exceptions and other control flow aspects. +Some of the kind of modularity we are interested in for interpreters - +subsetting, choice among implementation of basics aspects (memory +management,...) - has some similarity with recent research on OS +modularity and software composition, e.g the Flux Group OSKit project, +see [RFSLE00]_ about their composition tool Knit. + JITs and Dynamic Optimisation Complexity ++++++++++++++++++++++++++++++++++++++++++ @@ -243,6 +249,11 @@ .. file = dsl.ps.gz +.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, + "Knit: Component Composition for Systems Software", + in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. + http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf + .. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html @@ -269,7 +280,7 @@ http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf .. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, - "Adaptive optimization in the Jalapeno JVM. In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. + "Adaptive optimization in the Jalapeno JVM", In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. .. file = oopsla-vm-wkshp.pdf From pedronis at codespeak.net Tue Oct 14 19:44:23 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 19:44:23 +0200 (MEST) Subject: [pypy-svn] rev 1922 - pypy/trunk/doc/funding Message-ID: <20031014174423.60C735A179@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 19:44:22 2003 New Revision: 1922 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: url Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 19:44:22 2003 @@ -279,10 +279,11 @@ 2, 1999. http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf +.. file = oopsla-vm-wkshp.pdf + .. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, "Adaptive optimization in the Jalapeno JVM", In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. - -.. file = oopsla-vm-wkshp.pdf + http://citeseer.nj.nec.com/arnold00adaptive.html .. [R03] Armin Rigo, http://psyco.sourceforge.net From lac at codespeak.net Tue Oct 14 20:15:41 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Tue, 14 Oct 2003 20:15:41 +0200 (MEST) Subject: [pypy-svn] rev 1923 - pypy/trunk/doc/funding Message-ID: <20031014181541.8628F5A1EE@thoth.codespeak.net> Author: lac Date: Tue Oct 14 20:15:40 2003 New Revision: 1923 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: Add section CP4E, and put in the Ethic disclaimers they wanted. They say 'table' but I doubt that this will be hated. Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Tue Oct 14 20:15:40 2003 @@ -4,17 +4,43 @@ Ethical Considerations ----------------------- -Writing programs is by its nature a mental exercise which requires -knowledge, structured thought and tenacity. The result can then be run -on a piece of equipment that is very general in nature and that can be -mass produced at fairly low cost. This is an opportunity for making -the skill of program writing ubiquitous, bringing it to less developed -countries and regions and to groups of people who need new -opportunities. - -This is best done with a fast, powerful, easy to use language that is -equally available to everyone. Python in the Pypy implementation -intends to be such a language. +A. Proposers are requested to fill in the following table + +Does your proposed research raise sensitive ethical questions related to: + + Human beings No. + + + Human biological samples No. + + + Personal data (whether identified by name or not) No. + + + Genetic information No. + + + Animals No. + + +B. Proposers are requested to confirm that the proposed research does not + involve: + + Research activity aimed at human cloning for reproductive purposes No. + + Research activity intended to modify the genetic heritage of human + beings which could make such changes heritable. No. + + Research activity intended to create human embryos solely for the + purpose of research or for the purpose of stem cell procurement, + including by means of somatic cell nuclear transfer; No. + + Research involving the use of human embryos or embryonic stem + cells with the exception of banked or isolated human embryonic + stem cells in culture No. + +Confirmation : the proposed research involves none of the issues +listed in section B YES. Gender Issues ---------------- @@ -103,7 +129,7 @@ and C++ prone to attacks. By improving Python performance, a larger set of programs will be immune to such exploits. -3. Pypy provides the tools for adding specialised security features to +3. PyPy provides the tools for adding specialised security features to the language, in the form of new Object Spaces. This allows applications where security is paramount to add checks and partitioning that will significantly strengthen the defenses. As @@ -199,3 +225,42 @@ dynamic geometry laboratory and toolkit, commonly used by elementary and high school teachers. This is where the future lies. Python is already an excellent teaching language. PyPy will be a better one. + +Thus PyPy comes full circle, and back to Python's original heritage, +as a language that was designed to be 'easy to use' for +non-programmers. In the appendix, a proposal *Computer Programming +For Everybody*, written in 1999 by Guido van Rossum, Python's creator, +is as relevant now as when it was written. To summarise: + +Python's predecessor, ABC, was designed at CWI in the early eighties +as a teaching language. Its motto was "stamp out Basic" -- the main +competition in languages for non-experts at the time. ABC's designers +had a lot of experience teaching traditional programming languages +like ALGOL to novices. They discovered that students were often so +overwhelmed by the incidental details of using a computer language +they never managed to focus on good program and algorithm design. + +ABC's designers therefore set out to design a language that would take +care of all the incidentals, leaving the student more time to learn +about programming, and not the chore of 'how to use a computer'. They +proposed both a new language design and new terminology that deviated +radically from what was (and still is) current among computer +scientists and programmers. This proved to be a barrier towards +widespread adoption. ABC was too different. People actually wanted a +language which was more like other languages, not one that simply +didn't relate to what programmers would be doing the rest of their +lives. Thus ABC remained a teaching language, and nothing more. + +About a decade later, Python grew out of this frustration. It shares +ABC's focus on elegance of expression, fundamentals of programming, +and taking away incidentals, but adds the modern tools that programmers +have come to expect, such as object-orientation, and a large and +powerful standard library. + +The PyPy project, being a focused STREP, does not intend to address +the problem of 'Computer Literacy' and 'Computer Programming For +Everybody'. But we believe that these problems would make an +excellent candidate for a Python-related Specific Supporting Action, +and we would make every effort to aid and assist such an action should +the Commission call for it. + From pedronis at codespeak.net Tue Oct 14 20:19:39 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 20:19:39 +0200 (MEST) Subject: [pypy-svn] rev 1924 - pypy/trunk/doc/funding Message-ID: <20031014181939.4CD0E5A1EE@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 20:19:38 2003 New Revision: 1924 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: typos Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 20:19:38 2003 @@ -12,7 +12,7 @@ application developers seek more support and configurability of their language. This is especially the case for the rising number of specialized runtime environments where small memory footprints, -concurrency or realtime features are essential. +concurrency or real-time features are essential. Very-high-level languages (VHLL) offer a highly productive development tool. However, whole-program static compilation is often not @@ -81,7 +81,7 @@ Current State of The Art ------------------------------ -Intepreters Modularity +Interpreters Modularity ++++++++++++++++++++++++ In its basics, the approach of writing a language interpreter in the From pedronis at codespeak.net Tue Oct 14 20:29:02 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 20:29:02 +0200 (MEST) Subject: [pypy-svn] rev 1925 - pypy/trunk/doc/funding Message-ID: <20031014182902.B85EF5A1EE@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 20:29:01 2003 New Revision: 1925 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: & feature selection Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Tue Oct 14 20:29:01 2003 @@ -106,7 +106,7 @@ Some of the kind of modularity we are interested in for interpreters - subsetting, choice among implementation of basics aspects (memory -management,...) - has some similarity with recent research on OS +management,...), feature selection - has some similarity with recent research on OS modularity and software composition, e.g the Flux Group OSKit project, see [RFSLE00]_ about their composition tool Knit. From hpk at codespeak.net Tue Oct 14 20:51:24 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 20:51:24 +0200 (MEST) Subject: [pypy-svn] rev 1926 - pypy/trunk/doc/funding Message-ID: <20031014185124.425D45A1EE@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 20:51:23 2003 New Revision: 1926 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: reworked the background document and added some statements and resolved FIXMEs as far as i can see. Please check and comment. Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Tue Oct 14 20:51:23 2003 @@ -5,77 +5,71 @@ --------------------------- Python is a portable, interpreted, object-oriented Very-High Level -Language (VHLL). Its development started in 1990 at CWI, Centrum voor -Wiskunde en Informatica, the National Research Institute for -Mathematics and Computer Science in the Netherlands. Its principal -author is Guido van Rossum, a Dutch citizen currently living in the -United States. It is an Free/Open Source language. The most recent -version of the language is Python 2.3, released under the Python -Software Foundation License, which is approved by both the Open Source -Initiative, and the Free Software Foundation. - -Python has tens, perhaps hundreds of thousands of active developers -worldwide, which makes it one of the top ten most popular programming -languages in the world. Some other languages, specifically C, C++, Java, -Perl, and Visual Basic, have even larger user bases but they are either -proprietary or rather low-level languages. On the other hand, the -languages which most excite the Computer Science Research community -- -Self, Lisp, Haskell, Limbo, ML, and so on -- are nowhere on this list, -yet they are the targets of most European academic research and innovation. -Thus European economic competitiveness suffers. The innovative research -lives in academia, trapped in languages that are rarely used for commercial -development. +Language (VHLL). Python has tens, perhaps hundreds of thousands of +active developers, which makes it one of the top ten most popular +programming languages in the world. Some other languages, specifically +C, C++, Java, Perl, and Visual Basic, have even larger user bases but +they are either proprietary or rather low-level languages. On the other +hand, the languages which most excite the Computer Science Research +community -- Self, Lisp, Haskell, Limbo, ML, and so on -- are nowhere on +this list, yet they are the targets of most European academic research +and innovation. Thus European economic competitiveness suffers. The +innovative research lives in academia, trapped in languages that are +rarely used for commercial development. -Of those more popular languages, two, Java and Visual Basic are +Of the more popular languages, two, Java and Visual Basic are proprietary. Sun Microsystems owns Java, and Microsoft owns Visual -Basic. Any company which writes its software in Java or Visual Basic -is at the mercy of these large American companies. And this is a -real, not theoretical, threat. In 2002, Microsoft announced that it -would no longer be supporting Visual Basic 6.0 after the year 2005. -All Visual Basic Developers have been told to convert their code to -run under Microsoft's new .NET framework. In 2001 Microsoft -immediately stopped supporting its Visual J++ language, meant to be a -direct competitor with Java, after settling a lawsuit with Sun -Microsystems. Microsoft is making these decisions because they make -business sense for Microsoft, regardless of the effects on businesses -who develop software using Microsoft proprietary software. +Basic. Any company which writes its software in Java or Visual Basic is +at the mercy of these large American companies. This is a real, not +theoretical, threat. In 2002, Microsoft announced that it would no +longer be supporting Visual Basic 6.0 after the year 2005. All Visual +Basic Developers have been told to convert their code to run under +Microsoft's new .NET framework. In 2001 Microsoft immediately stopped +supporting its Visual J++ language, meant to be a direct competitor with +Java, after settling a lawsuit with Sun Microsystems. Microsoft is +making these decisions because they make business sense for Microsoft, +regardless of the effects on businesses who develop software using +Microsoft proprietary software. + +Maybe even more important, proprietary licensing policies make it +expensive and sometimes impossible to adapt these languages to +specialized hardware. European SMEs are moving to Free/Open Source platforms ------------------------------------------------------ -In the face of these threats to the very survival of their businesses, -European SMEs are moving to Free/Open Source languages such as Python. -In the year 2002, a group of SME's who rely on the Python programming -language came together to form the Python Business Forum -(www.python-in-business.org), at EuroPython, the European Python -Community Conference (www.europython.org). +In the face of these threats and flexibility problems, European SMEs are +moving to Free/Open Source languages such as Python. In the year 2002, +a group of SME's who rely on the Python programming language came +together to form the Python Business Forum (www.python-in-business.org), +at EuroPython, the European Python Community Conference +(www.europython.org). Advancing the Python platform ----------------------------- -While each SME member of the Python Business Forum has sufficient -faith in the Python programming language to use it for the development -of its own projects, it was agreed that there are defects in the -current implementation of the language. The two most often cited was -that the Python was too large for embedded applications and -applications designed for handhelds, and that the interpreter itself -ran too slowly. - -The developers of embedded systems intend to run on tiny machines -would like a language with a 'smaller footprint'. They would like to -strip out everything which they do not need from the language and run -with the bare-bones minimum. This is hard to do in any language, and -Python was not implemented with this goal in mind. +While each SME member of the Python Business Forum has sufficient faith +in the Python programming language to use it for the development of its +own projects, it was agreed that there are defects in the current +implementation of the language. The two most often cited ones are that +the current implementation is too large for embedded applications and +applications designed for handhelds, and that the interpreter itself ran +too slowly in some situations. + +The developers of embedded systems would like a highly productive +language with a smaller memory footprint. They would like to strip +out everything which they do not need and put in special extensions in +an easy way. Today, this is hard to do in any language, and Python was +not implemented with this goal in mind. -Another goal that was not paramount in Python's design and +Another goal which was not paramount in Python's design and implementation was execution speed. Python is a dynamically-typed, late-binding, interpreted language. While this proved to provide -extremely productive development environments, execution speed -sometimes is not fast enough. Today, optimisation of high-level -languages must be done at run-time, and is notoriously more difficult -to optimise than statically typed, early-binding compiled languages -such as C or C++. +extremely productive development environments, execution speed sometimes +is not fast enough. Today, optimisation of high-level languages must be +done at run-time, and is notoriously more difficult to optimise than +statically typed, early-binding compiled languages such as C, C++ or Java. Now a number of people and factors played together to start what is now one of the most promising very-high-level-language projects. @@ -83,15 +77,13 @@ Some high-profile research -------------------------- -Independently some researchers who worked with Python were pondering -writing an implementation of Python in Python itself. This group -included Armin Rigo, author of Psyco -http://psyco.sourceforge.net/introduction.html, a specialising -Just-In-Time compiler for Python. He is intimately familiar with both -Python internals and advanced research in compilers and runtime -systems, and saw a Python implementation in Python itself as a chance -to put the two fields together. It is useful to quote from his webpage -which states the goals of his Psyco in full:: +Some researchers who worked with Python were pondering writing an +implementation of Python in Python itself. This group included Armin +Rigo, author of Psyco, a specialising Just-In-Time compiler for Python. +He is intimately familiar with both Python internals and advanced +research in compilers and runtime systems, and saw a Python +implementation in Python itself as a chance to put the two fields +together. It is useful to quote the goals of Psyco_ in full:: My goal in programming Psyco is to contribute to reduce the following wide gap between academic computer science and @@ -126,17 +118,15 @@ High-level languages are faster than low-level ones! -Although Armin Rigo proved with his 'Psyco' project that higher level -languages can sometimes be optimized to be as fast or faster than C, he -was very limited by the fact that Python is itself implemented in C -like almost all other languages in industrial use today. There was no -real-life project who tried to go all 'optimize high-level down to -machine-code' way. Christian Tismer with his 'Stackless' project had -already come to a similar conclusion from a more industrial viewpoint -in that it is difficult to advance language technology while relying -on a large C-code base. - -FIXME Footnote to: http://www.stackless.com/ +Although Armin Rigo proved with his project that higher level languages +can sometimes be optimized to be as fast or faster than C, he was very +limited by the fact that Python is itself implemented in C like almost +all other languages in industrial use today. There was no real-life +project who tried to go all the 'optimize high-level down to machine-code' +way. Christian Tismer with his 'Stackless' project had already come to a +similar conclusion from a more industrial viewpoint in that **it is +difficult to advance language technology while relying on a large C-code +base**. Some mailing list discussions ----------------------------- @@ -145,17 +135,17 @@ where developers and academics were pondering about the possibility of developing a 'minimal' Python implemented in Python itself. Most noticeably Christian Tismer author of an industrial-use extension -('Stackless') of the Python language noted in a postscript to one of -his mails that having a minimized version of Python could provide a -new base to advance the language. Nevertheless, his extensions to the -language proved to be useful for companies who needed a way to have +('Stackless') of the Python language noted in a postscript to one of his +mails that having a minimized version of Python could provide a new base +to advance the language. Nevertheless, his extensions to the language +already proved to be useful for companies who needed a way to have millions of active objects and he had a branch of CPython to make this possible. Some organizational experience ------------------------------ -Meanwhile Holger Krekel had joined the Python community in 2002. For +Meanwhile Holger Krekel had joined the Python community in 2001. For some years he had designed the architecture for platforms and consulted for CEO's of some large banking centers in Europe. While participating in two 'coding sprints' of the Zope3 web-platform (the @@ -165,36 +155,81 @@ coding complex projects where traditional, slow-moving methods often fail. -At a Sprint a group of people assemble together to write code and -practice Agile software methodological techniques, such as -Pair-Programming. Not only is this a lot of fun, but it is a way to -transmit knowledge and enthusiasm throughout the community. - -Holger Krekel, seeing the opportunity to launch the PyPy project with -Armin Rigo and Christian Tismer offered to organize the first one-week -meeting, the 'Sprint towards a minimal Python'. Soon many interested -developers joined and intense academical and practical planning -ensued. Just a few weeks later the Sprint took place at -'Trillke-Gut', a castle-like building in Germany, bringing together -some key developers, among them Michael Hudson, the release manager of -version 2.2.1 of Python. +At a Sprint a group of people assemble to write code and practice Agile +software methodological techniques, such as Pair-Programming and writing +unit-tests before implementing the actual functionality. Not only is +this a lot of fun, but it is a way to transmit knowledge and understanding +throughout the group. + +Holger Krekel, seeing the opportunity to initiate the PyPy project with +Armin Rigo and Christian Tismer organized the first one-week meeting, +the 'Sprint towards a minimal Python'. Soon many interested developers +joined and intense academical and practical planning ensued. Just a few +weeks later the Sprint took place at 'Trillke-Gut', a castle-like +building in Germany, bringing together some key developers, among them +Michael Hudson, the release manager of version 2.2.1 of Python. + +Here is his german mail_ (a reply to Christian Tismer) that started this now +rapidly evolving project:: + + Gerson Kurz wrote: + > [interessante analysen, die ich zum grossteil nachvollziehen kann] + + > [christian tismer] + > > p.s.: Gerson, ganz vom aktuellen Python abgesehen f?nde + > > ich es durchaus interessant, ein "Ptn" zu machen: Ein + > > total abgespecktes Minimal-Python mit weniger Features + > > als 1.5.2, sozusagen spartanisch aber aus heutiger Sicht. + > + > Hey, genau das w?rde ich mir auch w?nschen! Ich w?re auch sofort + > bereit, + > dabei mitzuhelfen, so es mir den Zeitlich und von meinen M?glichkeiten + > gesehen her m?glich ist. (Ich fahre am Samstag erstmal f?r zwei Wochen + > in + > den Urlaub, aber dann...) + > + > Hast du schon n?here Pl?ne dazu? Genauer, hast du schonmal ?berlegt, + > welche + > Python-Features Ptn-w?rdig w?ren, und welche nicht? + + bin auch interessiert. wenn noch Armin Rigo (PSYCO) ins boot kaeme, + dann waere es noch besser. Ich habe auf jeden Fall auch interesse, + zumal ich zwischen weinachten endlich mal in die python-internals + (compile.c & ceval.c) eingestiegen bin. Christian (auf python-dev und + c.l.py) scheint ja auch die Philosophie zu verfolgen, python moeglichst + viel in python zu implementieren und sich von C-Ballast zu befreien. + Armin will gar den interpreter neu in python schreiben. + + Um es mal zu konkretisieren, biete ich an, einen "Sprint" auszurichten. + Das waeren drei tage, an denen wir die fundamentals eines MiniPython + entwickeln und ins Netz stellen. Abgesehen von der Vorbereitung kann + ich anbieten, dass wir mit netzconnection und voller verpflegung + einen 120qm saal mit drei bis vier beamern zur verfuegung haben. + und zwar in diesem gebauede: + + http://www.trillke.net/images/trillke_schnee.png + + das liegt in hildesheim, also 30 km von hannover. + + falls euch das zu schnell bzw. zu konkret ist, dann koennen wir auch + abstraker weiterdiskutieren :-) + + liebe gruesse und ebenfalls ein schoenes neues jahr, -Here is the mail that started this now rapidly evolving project -http://starship.python.net/pipermail/python-de/2003q1/002925.html + holger -Some promising open-source development tools --------------------------------------------- +Leveraging open-source development tools +---------------------------------------- From the beginning, the PyPy developers were committed using and integrating the most promising open-source technologies. Jens-Uwe Mager, the retired CTO from Helios (http://www.helios.de) attended the Sprint and helped set up a state-of-the-art open-source development environment. With his 12-year experience of setting up and leading a -SME-company which is one of the worldwide leaders in -print-preprocessing technology he helped organise the development and -net-connectivity for the various web services needed by the PyPy -developers. +SME-company which is one of the worldwide leaders in print-preprocessing +technology he helped organise the development and net-connectivity for +the various web services needed by the PyPy developers. Research, pragmatism and industry experience combined @@ -224,7 +259,7 @@ week you could already run simple Python programs within PyPy. PyPy had gone from being 'a nice idea' to 'something we knew we could do'. -The third sprint was again organized by interested developers in Belgium at +The third sprint was again organized by interested developers at the University in Louvain-La-Neuve, Belgium and held June 20-24. We invited Guido van Rossum, the inventor of Python to attend. He not only attended the Belgium sprint but announced a few days later at the @@ -235,27 +270,30 @@ By the end of the third one-week sprint at the University in Louvain-La-Neuve, the PyPy project had already produced a fully working prototype. There existed a working interpreter and standard -implementation of 90% of the python types, as well as advanced +implementation of 90% of the python core types, as well as advanced language features such as nested scopes, generators and metaclasses. Armin Rigo and Guido van Rossum had started work on a type-inference -engine which is the foundation for the final missing step: generating +engine as the foundation for the final missing step: generating a native machine-level version of Python from its high-level PyPy-implementation. Perhaps most importantly, we had the enthusiastic support of the Python community at the EuroPython conference. The fourth sprint in Berlin prototyped translation of Python functions -to low-level code with the help of Pyrex, an intermediate layer. With -a combination of novel techniques, Object Spaces and Abstract Interpretation, -it was clear that the general direction was viable and productive. +to low-level code with the help of Pyrex, an intermediate layer. The +architecture was refactored to implement abstract interpretation and the +actual translation process separatly. With a combination of novel +techniques, Object Spaces and Abstract Interpretation, it was clear that +the general direction was viable and productive. No work had been done on actually optimizing the complete prototype into low-level static code so it still runs around 30,000 times slower than the existing CPython-implementation but this was expected from the start. -Nevertheless, for a proof of concept, approximately five weeks work +Nevertheless, for a proof of concept, approximately six weeks work total for a group of about a dozen people, it was clearly a success. -It was time to look for funding. +It was time to look for funding to bring the project to its full +potential and to intensify research on several interesting areas. On June 17th, the 2nd Call of the Information Society Technologies [IST] Priority went out. Included in it was IST-2002-2.3.2.3 - Open @@ -263,3 +301,7 @@ We believe that what we intend to do is a perfect fit for the goals of this call. + +.. mail http://starship.python.net/pipermail/python-de/2003q1/002925.html + +.. Psyco http://psyco.sourceforge.net/introduction.html From pedronis at codespeak.net Tue Oct 14 20:51:30 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 20:51:30 +0200 (MEST) Subject: [pypy-svn] rev 1927 - in pypy/trunk/doc/funding: . proposal Message-ID: <20031014185130.A59F55A284@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 20:51:29 2003 New Revision: 1927 Added: pypy/trunk/doc/funding/wirth.lean.pdf (props changed) - copied unchanged from rev 1925, pypy/trunk/doc/funding/proposal/wirth.lean.pdf Removed: pypy/trunk/doc/funding/proposal/wirth.lean.pdf Log: moving wirth out of proposal. Deleted: /pypy/trunk/doc/funding/proposal/wirth.lean.pdf ============================================================================== Binary file. No diff available. From tismer at codespeak.net Tue Oct 14 20:52:09 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 20:52:09 +0200 (MEST) Subject: [pypy-svn] rev 1928 - pypy/trunk/doc/funding/proposal Message-ID: <20031014185209.4DB395A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 20:52:07 2003 New Revision: 1928 Added: pypy/trunk/doc/funding/proposal/pep-0001.pdf (contents, props changed) Log: added pep-0001.pdf Added: pypy/trunk/doc/funding/proposal/pep-0001.pdf ============================================================================== Binary file. No diff available. From tismer at codespeak.net Tue Oct 14 20:56:31 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 20:56:31 +0200 (MEST) Subject: [pypy-svn] rev 1929 - in pypy/trunk/doc/funding/pep-0001: . pep-0001_files Message-ID: <20031014185631.756235A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 20:56:30 2003 New Revision: 1929 Added: pypy/trunk/doc/funding/pep-0001/ pypy/trunk/doc/funding/pep-0001/pep-0001.html pypy/trunk/doc/funding/pep-0001/pep-0001.sxw (contents, props changed) pypy/trunk/doc/funding/pep-0001/pep-0001_files/ pypy/trunk/doc/funding/pep-0001/pep-0001_files/PyBanner046.gif (contents, props changed) pypy/trunk/doc/funding/pep-0001/pep-0001_files/pep.css Log: added pep-001 source Added: pypy/trunk/doc/funding/pep-0001/pep-0001.html ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/pep-0001/pep-0001.html Tue Oct 14 20:56:30 2003 @@ -0,0 +1,462 @@ + + + PEP 1 -- PEP Purpose and Guidelines + + + + + + + + + +
+ +++ + + + + + + + + + + + + + + + + + + + + + +
PEP:1
Title:PEP Purpose and Guidelines
Version:1.43
Last-Modified:2003/05/07 00:03:13
Author:Barry A. Warsaw, Jeremy Hylton, David Goodger
Status:Active
Type:Informational
Content-Type:text/x-rst
Created:13-Jun-2000
Post-History:21-Mar-2001, 29-Jul-2002, 03-May-2003
+
+ +
+

What is a PEP?

+

PEP stands for Python Enhancement Proposal. A PEP is a design +document providing information to the Python community, or describing +a new feature for Python. The PEP should provide a concise technical +specification of the feature and a rationale for the feature.

+

We intend PEPs to be the primary mechanisms for proposing new +features, for collecting community input on an issue, and for +documenting the design decisions that have gone into Python. The PEP +author is responsible for building consensus within the community and +documenting dissenting opinions.

+

Because the PEPs are maintained as text files under CVS control, their +revision history is the historical record of the feature proposal +[1].

+
+
+

Kinds of PEPs

+

There are two kinds of PEPs. A Standards Track PEP describes a new +feature or implementation for Python. An Informational PEP describes +a Python design issue, or provides general guidelines or information +to the Python community, but does not propose a new feature. +Informational PEPs do not necessarily represent a Python community +consensus or recommendation, so users and implementors are free to +ignore Informational PEPs or follow their advice.

+
+
+

PEP Work Flow

+

The PEP editors assign PEP numbers and change their status. The +current PEP editors are David Goodger and Barry Warsaw. Please send +all PEP-related email to <peps at python.org>.

+

The PEP process begins with a new idea for Python. It is highly +recommended that a single PEP contain a single key proposal or new +idea. The more focussed the PEP, the more successful it tends to +be. The PEP editor reserves the right to reject PEP proposals if they +appear too unfocussed or too broad. If in doubt, split your PEP into +several well-focussed ones.

+

Each PEP must have a champion -- someone who writes the PEP using the +style and format described below, shepherds the discussions in the +appropriate forums, and attempts to build community consensus around +the idea. The PEP champion (a.k.a. Author) should first attempt to +ascertain whether the idea is PEP-able. Small enhancements or patches +often don't need a PEP and can be injected into the Python development +work flow with a patch submission to the SourceForge patch manager [6] +or feature request tracker [7].

+

The PEP champion then emails the PEP editor <peps at python.org> with a +proposed title and a rough, but fleshed out, draft of the PEP. This +draft must be written in PEP style as described below.

+

If the PEP editor approves, he will assign the PEP a number, label it +as Standards Track or Informational, give it status "Draft", and +create and check-in the initial draft of the PEP. The PEP editor will +not unreasonably deny a PEP. Reasons for denying PEP status include +duplication of effort, being technically unsound, not providing proper +motivation or addressing backwards compatibility, or not in keeping +with the Python philosophy. The BDFL (Benevolent Dictator for Life, +Guido van Rossum) can be consulted during the approval phase, and is +the final arbitrator of the draft's PEP-ability.

+

If a pre-PEP is rejected, the author may elect to take the pre-PEP to +the comp.lang.python newsgroup (a.k.a. python-list at python.org mailing +list) to help flesh it out, gain feedback and consensus from the +community at large, and improve the PEP for re-submission.

+

The author of the PEP is then responsible for posting the PEP to the +community forums, and marshaling community support for it. As updates +are necessary, the PEP author can check in new versions if they have +CVS commit permissions, or can email new PEP versions to the PEP +editor for committing.

+

Standards Track PEPs consists of two parts, a design document and a +reference implementation. The PEP should be reviewed and accepted +before a reference implementation is begun, unless a reference +implementation will aid people in studying the PEP. Standards Track +PEPs must include an implementation -- in the form of code, patch, or +URL to same -- before it can be considered Final.

+

PEP authors are responsible for collecting community feedback on a PEP +before submitting it for review. A PEP that has not been discussed on +python-list at python.org and/or python-dev at python.org will not be +accepted. However, wherever possible, long open-ended discussions on +public mailing lists should be avoided. Strategies to keep the +discussions efficient include, setting up a separate SIG mailing list +for the topic, having the PEP author accept private comments in the +early design phases, etc. PEP authors should use their discretion +here.

+

Once the authors have completed a PEP, they must inform the PEP editor +that it is ready for review. PEPs are reviewed by the BDFL and his +chosen consultants, who may accept or reject a PEP or send it back to +the author(s) for revision. For a PEP that is pre-determined to be +acceptable (e.g., it is an obvious win as-is and/or its implementation +has already been checked in) the BDFL may also initiate a PEP review, +first notifying the PEP author(s) and giving them a chance to make +revisions.

+

For a PEP to be accepted it must meet certain minimum criteria. It +must be a clear and complete description of the proposed enhancement. +The enhancement must represent a net improvement. The proposed +implementation, if applicable, must be solid and must not complicate +the interpreter unduly. Finally, a proposed enhancement must be +"pythonic" in order to be accepted by the BDFL. (However, "pythonic" +is an imprecise term; it may be defined as whatever is acceptable to +the BDFL. This logic is intentionally circular.) See PEP 2 [2] for +standard library module acceptance criteria.

+

Once a PEP has been accepted, the reference implementation must be +completed. When the reference implementation is complete and accepted +by the BDFL, the status will be changed to "Final".

+

A PEP can also be assigned status "Deferred". The PEP author or +editor can assign the PEP this status when no progress is being made +on the PEP. Once a PEP is deferred, the PEP editor can re-assign it +to draft status.

+

A PEP can also be "Rejected". Perhaps after all is said and done it +was not a good idea. It is still important to have a record of this +fact.

+

PEPs can also be replaced by a different PEP, rendering the original +obsolete. This is intended for Informational PEPs, where version 2 of +an API can replace version 1.

+

PEP work flow is as follows:

+
Draft -> Accepted -> Final -> Replaced
+  ^
+  +----> Rejected
+  v
+Deferred
+
+

Some Informational PEPs may also have a status of "Active" if they are +never meant to be completed. E.g. PEP 1 (this PEP).

+
+
+

What belongs in a successful PEP?

+

Each PEP should have the following parts:

+
    +
  1. Preamble -- RFC 822 style headers containing meta-data about the +PEP, including the PEP number, a short descriptive title (limited +to a maximum of 44 characters), the names, and optionally the +contact info for each author, etc.

    +
  2. +
  3. Abstract -- a short (~200 word) description of the technical issue +being addressed.

    +
  4. +
  5. Copyright/public domain -- Each PEP must either be explicitly +labelled as placed in the public domain (see this PEP as an +example) or licensed under the Open Publication License [8].

    +
  6. +
  7. Specification -- The technical specification should describe the +syntax and semantics of any new language feature. The +specification should be detailed enough to allow competing, +interoperable implementations for any of the current Python +platforms (CPython, Jython, Python .NET).

    +
  8. +
  9. Motivation -- The motivation is critical for PEPs that want to +change the Python language. It should clearly explain why the +existing language specification is inadequate to address the +problem that the PEP solves. PEP submissions without sufficient +motivation may be rejected outright.

    +
  10. +
  11. Rationale -- The rationale fleshes out the specification by +describing what motivated the design and why particular design +decisions were made. It should describe alternate designs that +were considered and related work, e.g. how the feature is supported +in other languages.

    +

    The rationale should provide evidence of consensus within the +community and discuss important objections or concerns raised +during discussion.

    +
  12. +
  13. Backwards Compatibility -- All PEPs that introduce backwards +incompatibilities must include a section describing these +incompatibilities and their severity. The PEP must explain how the +author proposes to deal with these incompatibilities. PEP +submissions without a sufficient backwards compatibility treatise +may be rejected outright.

    +
  14. +
  15. Reference Implementation -- The reference implementation must be +completed before any PEP is given status "Final", but it need not +be completed before the PEP is accepted. It is better to finish +the specification and rationale first and reach consensus on it +before writing code.

    +

    The final implementation must include test code and documentation +appropriate for either the Python language reference or the +standard library reference.

    +
  16. +
+
+
+

PEP Formats and Templates

+

There are two PEP formats available to authors: plaintext and +reStructuredText [9].

+

Plaintext PEPs are written in plain ASCII text, contain minimal +structural markup, and should adhere to a rigid style. PEP 9 contains +a boilerplate template [3] you can use to get started writing your +plaintext PEP.

+

ReStructuredText [9] PEPs allow for rich markup that is still quite easy +to read, but results in much better-looking and more functional HTML. +PEP 12 contains a boilerplate template [4] for use with +reStructuredText PEPs.

+

There is a Python script that converts both styles of PEPs to HTML for +viewing on the web [5]. Parsing and conversion of plaintext PEPs is +self-contained within the script. reStructuredText PEPs are parsed +and converted by Docutils [10] code called from the script.

+
+
+

PEP Header Preamble

+

Each PEP must begin with an RFC 822 style header preamble. The headers +must appear in the following order. Headers marked with "*" are +optional and are described below. All other headers are required.

+
  PEP: <pep number>
+  Title: <pep title>
+  Version: <cvs version string>
+  Last-Modified: <cvs date string>
+  Author: <list of authors' real names and optionally, email addrs>
+* Discussions-To: <email address>
+  Status: <Draft | Active | Accepted | Deferred | Rejected |
+           Final | Replaced>
+  Type: <Informational | Standards Track>
+* Content-Type: <text/plain | text/x-rst>
+* Requires: <pep numbers>
+  Created: <date created on, in dd-mmm-yyyy format>
+* Python-Version: <version number>
+  Post-History: <dates of postings to python-list and python-dev>
+* Replaces: <pep number>
+* Replaced-By: <pep number>
+
+

The Author header lists the names, and optionally the email addresses +of all the authors/owners of the PEP. The format of the Author header +value must be

+
+Random J. User <address at dom.ain>
+

if the email address is included, and just

+
+Random J. User
+

if the address is not given. For historical reasons the format +"address at dom.ain (Random J. User)" may appear in a PEP, however new +PEPs must use the mandated format above, and it is acceptable to +change to this format when PEPs are updated.

+

If there are multiple authors, each should be on a separate line +following RFC 2822 continuation line conventions. Note that personal +email addresses in PEPs will be obscured as a defense against spam +harvesters.

+

While a PEP is in private discussions (usually during the initial +Draft phase), a Discussions-To header will indicate the mailing list +or URL where the PEP is being discussed. No Discussions-To header is +necessary if the PEP is being discussed privately with the author, or +on the python-list or python-dev email mailing lists. Note that email +addresses in the Discussions-To header will not be obscured.

+

The Type header specifies the type of PEP: Informational or Standards +Track.

+

The format of a PEP is specified with a Content-Type header. The +acceptable values are "text/plain" for plaintext PEPs (see PEP 9 [3]) +and "text/x-rst" for reStructuredText PEPs (see PEP 12 [4]). +Plaintext ("text/plain") is the default if no Content-Type header is +present.

+

The Created header records the date that the PEP was assigned a +number, while Post-History is used to record the dates of when new +versions of the PEP are posted to python-list and/or python-dev. Both +headers should be in dd-mmm-yyyy format, e.g. 14-Aug-2001.

+

Standards Track PEPs must have a Python-Version header which indicates +the version of Python that the feature will be released with. +Informational PEPs do not need a Python-Version header.

+

PEPs may have a Requires header, indicating the PEP numbers that this +PEP depends on.

+

PEPs may also have a Replaced-By header indicating that a PEP has been +rendered obsolete by a later document; the value is the number of the +PEP that replaces the current document. The newer PEP must have a +Replaces header containing the number of the PEP that it rendered +obsolete.

+
+
+

Reporting PEP Bugs, or Submitting PEP Updates

+

How you report a bug, or submit a PEP update depends on several +factors, such as the maturity of the PEP, the preferences of the PEP +author, and the nature of your comments. For the early draft stages +of the PEP, it's probably best to send your comments and changes +directly to the PEP author. For more mature, or finished PEPs you may +want to submit corrections to the SourceForge bug manager [11] or better +yet, the SourceForge patch manager [6] so that your changes don't get +lost. If the PEP author is a SF developer, assign the bug/patch to +him, otherwise assign it to the PEP editor.

+

When in doubt about where to send your changes, please check first +with the PEP author and/or PEP editor.

+

PEP authors who are also SF committers, can update the PEPs themselves +by using "cvs commit" to commit their changes. Remember to also push +the formatted PEP text out to the web by doing the following:

+
% python pep2html.py -i NUM
+
+

where NUM is the number of the PEP you want to push out. See

+
% python pep2html.py --help
+
+

for details.

+
+
+

Transferring PEP Ownership

+

It occasionally becomes necessary to transfer ownership of PEPs to a +new champion. In general, we'd like to retain the original author as +a co-author of the transferred PEP, but that's really up to the +original author. A good reason to transfer ownership is because the +original author no longer has the time or interest in updating it or +following through with the PEP process, or has fallen off the face of +the 'net (i.e. is unreachable or not responding to email). A bad +reason to transfer ownership is because you don't agree with the +direction of the PEP. We try to build consensus around a PEP, but if +that's not possible, you can always submit a competing PEP.

+

If you are interested in assuming ownership of a PEP, send a message +asking to take over, addressed to both the original author and the PEP +editor <peps at python.org>. If the original author doesn't respond to +email in a timely manner, the PEP editor will make a unilateral +decision (it's not like such decisions can't be reversed :).

+
+
+

References and Footnotes

+ + + + + +
[1]This historical record is available by the normal CVS commands +for retrieving older revisions. For those without direct access to +the CVS tree, you can browse the current and past PEP revisions via +the SourceForge web site at +http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/nondist/peps/
+ + + + + +
[2]PEP 2, Procedure for Adding New Modules, Faassen +(http://www.python.org/peps/pep-0002.html)
+ + + + + +
[3](1, 2) PEP 9, Sample Plaintext PEP Template, Warsaw +(http://www.python.org/peps/pep-0009.html)
+ + + + + +
[4](1, 2) PEP 12, Sample reStructuredText PEP Template, Goodger, Warsaw +(http://www.python.org/peps/pep-0012.html)
+ + + + + +
[5]The script referred to here is pep2html.py, which lives in the +same directory in the CVS tree as the PEPs themselves. Try +pep2html.py --help for details. The URL for viewing PEPs on +the web is http://www.python.org/peps/.
+ + + + + +
[6](1, 2) http://sourceforge.net/tracker/?group_id=5470&atid=305470
+ + + + + +
[7]http://sourceforge.net/tracker/?atid=355470&group_id=5470&func=browse
+ + + + + +
[8]http://www.opencontent.org/openpub/
+ + + + + +
[9](1, 2) http://docutils.sourceforge.net/rst.html
+ + + + + +
[10]http://docutils.sourceforge.net/
+ + + + + +
[11]http://sourceforge.net/tracker/?group_id=5470&atid=105470
+
+ +
+ + + + \ No newline at end of file Added: pypy/trunk/doc/funding/pep-0001/pep-0001.sxw ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/pep-0001/pep-0001_files/PyBanner046.gif ============================================================================== Binary file. No diff available. Added: pypy/trunk/doc/funding/pep-0001/pep-0001_files/pep.css ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/pep-0001/pep-0001_files/pep.css Tue Oct 14 20:56:30 2003 @@ -0,0 +1,240 @@ +/* +:Author: David Goodger +:Contact: goodger at users.sourceforge.net +:date: $Date: 2002/11/12 03:06:36 $ +:version: $Revision: 1.5 $ +:copyright: This stylesheet has been placed in the public domain. + +Default cascading style sheet for the PEP HTML output of Docutils. +*/ + +.first { + margin-top: 0 } + +.last { + margin-bottom: 0 } + +.navigation { + width: 100% ; + background: #99ccff ; + margin-top: 0px ; + margin-bottom: 0px } + +.navigation .navicon { + width: 150px ; + height: 35px } + +.navigation .textlinks { + padding-left: 1em ; + text-align: left } + +.navigation td, .navigation th { + padding-left: 0em ; + padding-right: 0em ; + vertical-align: middle } + +.rfc2822 { + margin-top: 0.5em ; + margin-left: 0.5em ; + margin-right: 0.5em ; + margin-bottom: 0em } + +.rfc2822 td { + text-align: left } + +.rfc2822 th.field-name { + text-align: right ; + font-family: sans-serif ; + padding-right: 0.5em ; + font-weight: bold ; + margin-bottom: 0em } + +a.toc-backref { + text-decoration: none ; + color: black } + +body { + margin: 0px ; + margin-bottom: 1em ; + padding: 0px } + +dd { + margin-bottom: 0.5em } + +div.section { + margin-left: 1em ; + margin-right: 1em ; + margin-bottom: 1.5em } + +div.section div.section { + margin-left: 0em ; + margin-right: 0em ; + margin-top: 1.5em } + +div.abstract { + margin: 2em 5em } + +div.abstract p.topic-title { + font-weight: bold ; + text-align: center } + +div.attention, div.caution, div.danger, div.error, div.hint, +div.important, div.note, div.tip, div.warning { + margin: 2em ; + border: medium outset ; + padding: 1em } + +div.attention p.admonition-title, div.caution p.admonition-title, +div.danger p.admonition-title, div.error p.admonition-title, +div.warning p.admonition-title { + color: red ; + font-weight: bold ; + font-family: sans-serif } + +div.hint p.admonition-title, div.important p.admonition-title, +div.note p.admonition-title, div.tip p.admonition-title { + font-weight: bold ; + font-family: sans-serif } + +div.figure { + margin-left: 2em } + +div.footer, div.header { + font-size: smaller } + +div.footer { + margin-left: 1em ; + margin-right: 1em } + +div.system-messages { + margin: 5em } + +div.system-messages h1 { + color: red } + +div.system-message { + border: medium outset ; + padding: 1em } + +div.system-message p.system-message-title { + color: red ; + font-weight: bold } + +div.topic { + margin: 2em } + +h1 { + font-family: sans-serif ; + font-size: large } + +h2 { + font-family: sans-serif ; + font-size: medium } + +h3 { + font-family: sans-serif ; + font-size: small } + +h4 { + font-family: sans-serif ; + font-style: italic ; + font-size: small } + +h5 { + font-family: sans-serif; + font-size: x-small } + +h6 { + font-family: sans-serif; + font-style: italic ; + font-size: x-small } + +.section hr { + width: 75% } + +ol.simple, ul.simple { + margin-bottom: 1em } + +ol.arabic { + list-style: decimal } + +ol.loweralpha { + list-style: lower-alpha } + +ol.upperalpha { + list-style: upper-alpha } + +ol.lowerroman { + list-style: lower-roman } + +ol.upperroman { + list-style: upper-roman } + +p.caption { + font-style: italic } + +p.credits { + font-style: italic ; + font-size: smaller } + +p.label { + white-space: nowrap } + +p.topic-title { + font-family: sans-serif ; + font-weight: bold } + +pre.line-block { + font-family: serif ; + font-size: 100% } + +pre.literal-block, pre.doctest-block { + margin-left: 2em ; + margin-right: 2em ; + background-color: #eeeeee } + +span.classifier { + font-family: sans-serif ; + font-style: oblique } + +span.classifier-delimiter { + font-family: sans-serif ; + font-weight: bold } + +span.interpreted { + font-family: sans-serif } + +span.option-argument { + font-style: italic } + +span.pre { + white-space: pre } + +span.problematic { + color: red } + +table { + margin-top: 0.5em ; + margin-bottom: 0.5em } + +td, th { + padding-left: 0.5em ; + padding-right: 0.5em ; + vertical-align: top } + +td.num { + text-align: right } + +th.field-name { + font-weight: bold ; + text-align: left ; + white-space: nowrap } + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + font-size: 100% } + +tt { + background-color: #eeeeee } + +ul.auto-toc { + list-style-type: none } From tismer at codespeak.net Tue Oct 14 20:57:38 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 20:57:38 +0200 (MEST) Subject: [pypy-svn] rev 1930 - pypy/trunk/doc/funding/cp4e Message-ID: <20031014185738.634995A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 20:57:37 2003 New Revision: 1930 Added: pypy/trunk/doc/funding/cp4e/ pypy/trunk/doc/funding/cp4e/cp4e.html Log: cp4e source added Added: pypy/trunk/doc/funding/cp4e/cp4e.html ============================================================================== --- (empty file) +++ pypy/trunk/doc/funding/cp4e/cp4e.html Tue Oct 14 20:57:37 2003 @@ -0,0 +1,1508 @@ + + + + Computer Programming for Everybody + + + +

Computer Programming for Everybody

+ +

This is the text of a revised funding proposal that we sent to +DARPA in August 1999. In March, we heard that at least an earlier version of the proposal was +accepted by DARPA; the work has begun late 1999 and will hopefully +last two years, although we've only received funding for the first +year (through October 2000). We're keeping our fingers crossed for +the rest. + +

Please look at the Computer Programming for +Everybody (CP4E) home page and the EDU-SIG home page (Python in Education Special Interest Group). +This is where the current project status is described and/or will be +discussed, and where you'll find pointers to more resources. + +

Note:I have made one change to the text of the +proposal: At the request of some supporters of other languages, I've +withdrawn a language comparison chart that contained highly personal +and sometimes unfounded opinions of other languages. The table was +being used out of context in a way that some found objectionable. +(Not all of the table is disputed, but it seems wiser not to engage in +direct language comparisons without a lot more +documentation.)
+ +

I've also removed some administrative details from the text and +made some minor changes to accommodate HTML. I apologize for the +writing style, which is at times more representative of funding +proposals than most of the prose I write. I would like to thank +Jeremy Hylton, Barry Warsaw, Al Vezza, Bob Kahn, Randy Pausch and +David Beazley for contributions and suggestions that made this a +successful proposal. + +

--Guido van +Rossum
+ +
+ + +  +
  +
  +
+

Computer Programming for Everybody +
(Revised Proposal) +

A Scouting Expedition for the Programmers +of Tomorrow +
  +
  +

Corporation for National Research Initiatives +

July 1999 +

CNRI Proposal # 90120-1a +

PI: Guido van Rossum

+ +


+
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +

+ + + + + + + + +Point of Contact: Guido van Rossum +
Corporation for National Research Initiatives +
1895 Preston White Drive, Suite 100 +
Reston, VA 20191-5434 +
Tel: (703) 620-8990 +
Fax: (703) 620-0913 +
Email: guido at cnri.reston.va.us
+
+
+
+
+
+
+
+
+
+ +


Innovative +Claims +

In the seventies, Xerox PARC asked: "Can we have a computer on every +desk?" We now know this is possible, but those computers haven't necessarily +empowered their users. Today's computers are often inflexible: the average +computer user can typically only change a limited set of options configurable +via a "wizard" (a lofty word for a canned dialog), and is dependent on +expert programmers for everything else. +

We ask a follow-up question: "What will happen if users can program +their own computer?" We're looking forward to a future where every computer +user will be able to "open the hood" of their computer and make improvements +to the applications inside. We believe that this will eventually change +the nature of software and software development tools fundamentally. +

We compare mass ability to read and write software with mass literacy, +and predict equally pervasive changes to society. Hardware is now sufficiently +fast and cheap to make mass computer education possible: the next big change +will happen when most computer users have the knowledge and power to create +and modify software. +

The open source movement claims that peer review of software by thousands +can greatly improve the quality of software. The success of Linux shows +the value of this claim. We believe that the next step, having millions +(or billions) of programmers, will cause a change of a different quality--the +abundant availability of personalized software. +

The tools needed for this new way to look at programming will be different +from the tools currently available to professional programmers. We intend +to greatly improve both the training material and the development tools +available. For example, non-professional programmers should not have to +fear that a small mistake might destroy their work or render their computer +unusable. They also need better tools to help them understand the structure +of a program, whether explicit or implied in the source code. +

Our plan has three components: +

    +
  • +Develop a new computing curriculum suitable for high school and college +students.
  • + +
  • +Create better, easier to use tools for program development and analysis.
  • + +
  • +Build a user community around all of the above, encouraging feedback and +self-help.
  • +
+These components come together in the scientific exploration of the role +of programming in next generation computing environments. +

We intend to start with Python, a language designed for rapid development. +We believe that Python makes a great first language to learn: Unlike languages +designed specifically for beginners, Python is also the choice of many +programming professionals. It has an active, growing user community which +has already expressed much interest in this proposal, and we expect that +this will be a fertile first deployment ground for the teaching materials +and tools we propose to create. During the course of the research we will +evaluate Python and propose improvements or alternatives. +

Rationale +

CNRI proposes to undertake a research effort +called Computer Programming for Everybody (CP4E). This effort intends +to improve the state of the art of computer use, not by introducing new +hardware, nor even (primarily) through new software, but simply by empowering +all users to be computer programmers. +

Recent developments in computer and communication hardware have given +many people access to powerful computers, in the form of desktops, laptops, +and embedded systems. It is time to give these users more control over +their computers through education and supporting software. If users have +a general understanding of computers at the level of software design and +implementation, this will cause a massive surge in productivity and creativity, +with a far-ranging impact that can barely be anticipated or imagined. +

On a shorter term, the quantity and quality of available computer software +will improve drastically, as the imagination and labor of millions is applied +to the problem. Inventive users will be able to improve the software that +supports them in their tasks, and share their improvements with their colleagues +or--via the Internet--with others far away who are faced with the same tasks +and problems. The ability to modify or customize software is important +in crisis situations, when experts cannot be appealed to for help. It is +also important for day-to-day activities: The number of unfilled programming +jobs is currently estimated by some at 200,000 to 400,000. +

Research +Goals +

The two major research goals are the development of a prototype of a +new programming curriculum and matching prototype software comprising +a highly user-friendly programming environment. We envision that +the typical target audience will consist of high school and (non-CS major) +undergraduate college students, although younger students and adults will +also be considered. Course and software will normally be used together, +so they should be tightly tuned to each other; each will also be usable +on its own. +

We will also explore the role of programming in the future. We are rapidly +entering an age where information appliances, wearable computers, and deeply +networked, embedded CPUs in everyday objects offer users control over their +physical and information environments. End-user programmability will be +the key to unlocking the potential of these technologies. (This is a common +theme of DARPA's Information Technology Expeditions, cf. [Dertouzos].) +

The research effort will not be done in isolation. We will engage academic +research groups as well as several leading high schools. We will also build +a larger community by making our course materials and software freely available +on the Internet. +

We plan to start by basing both components on Python, a popular free +interpreted object-oriented language [Python] [Lutz] [Watters]. Originally +developed at CWI in Amsterdam, Python is currently being developed and +maintained by CNRI. Python is extremely suitable for teaching purposes, +without being a "toy" language: it is very popular with computer professionals +as a rapid application development language. Python combines elements from +several major programming paradigms (procedural, functional and object-oriented) +with an elegant syntax that is easy on the eyes and easy to learn and use. +While we believe that Python is a good starting point, undoubtedly we will +learn that improvements are possible. As part of our research, we will +evaluate the effectiveness of Python for education and use by beginners, +and design improvements or alternatives. +

We expect that the fruits of our research will be demonstrable within +two years and can impact society as a whole within a decade. This is the +point when children who learn computer programming using our course in +high school will start joining the work force (and the military). We expect +the new mobile and embedded computing and communication technologies mentioned +above to reach maturity around the same time. Thus, our timelines are nicely +matched. +

Motivation +

In the dark ages, only those with power or great wealth (and selected +experts) possessed reading and writing skills or the ability to acquire +them. It can be argued that literacy of the general population (while still +not 100%), together with the invention of printing technology, has been +one of the most emancipatory forces of modern history. +

We have only recently entered the information age, and it is expected +that computer and communication technology will soon replace printing as +the dominant form of information distribution technology. About half of +all US households already own at least one personal computer, and this +number is still growing. +

However, while many people nowadays use a computer, few of them are +computer programmers. Non-programmers aren't really "empowered" in how +they can use their computer: they are confined to using applications in +ways that "programmers" have determined for them. One doesn't need to be +a visionary to see the limitations here. +

An even more radical change is the introduction of computing and communications +embedded in home and office systems. The number of devices that will contain +programmable elements is expected to grow dramatically in the coming years. +We must learn how to expose this programmability to users in a meaningful +way and to make it easy for non-programmers to control and program these +devices. +

In this "expedition into the future," we want to explore the notion +that virtually everybody can obtain some level of computer programming +skills in school, just as they can learn how to read and write. +

There are many challenges for programming languages and environments +to be used by a mass audience. If everybody is a programmer, poor programmers +will surely abound. Coping with this situation adequately requires a rethinking +of the fundamental properties of programming languages and development +tools. Yet, we believe that there should be no clear-cut distinction between +tools used by professionals and tools used for education--just as professional +writers use the same language and alphabet as their readers! +

Given the ever more pervasive use of computers and software in every +aspect of society, we expect the need for programming skills will only +increase. While most quality software will be produced by professionals, +there will be a need for more programming and customizability by end users. +

Examples of this drive for flexibility can be seen in both present-day +computing and its likely future: +

    +
  • +Increasingly powerful applications for desktop and laptop computers use +scripting and macro facilities.
  • + +
  • +Growth of the Internet has led directly to greater need for programmability +to create active and interactive Web content.
  • + +
  • +End-user information appliances and networks of CPUs embedded in everyday +objects--both will demand user control and personalization.
  • + +
  • +Mobile and intelligent software agents will be commonplace and require +customization by users.
  • +
+Our +Vision +

In the future, we envision that computer programming will be taught +in elementary school, just like reading, writing and arithmetic. We really +mean computer programming--not just computer use (which is already +being taught). The Logo project [Papert][Logo], for example, has shown +that young children can benefit from a computing education. Of course, +most children won't grow up to be skilled application developers, just +as most people don't become professional authors--but reading and writing +skills are useful for everyone, and so (in our vision) will be general +programming skills. For the time being, we set our goals a bit less ambitious. +We focus on teaching programming to high school and (non-CS major) college +undergraduates. If we are successful here, we expect that the lower grades +will soon follow, within their limitations. +

In addition to the goal of teaching how computers work, a course in +computer programming will return to the curriculum an emphasis on logical +thought which was once the main benefit of teaching geometry. +

Two general computing trends of particular interest are the move towards +information appliances and the growth of embedded CPUs in everyday machines +and appliances--whether in the military or the civilian sector. The decreasing +size of computing and the increasing reach of networking, particularly +wireless networking, make it possible to share information between devices +and to interact with them. The ability to program will greatly improve +users' ability to control these devices. Imagine that users could make +their own changes to the software embedded in, say, their GPS receiver +or handheld organizer, rather than (or in addition to) downloading upgrades +from a vendor or buying "canned" add-on applications from third parties. +This would greatly empower people to improve their life by programming +their personal tools to do exactly what they need them to do. +

If we are successful, non-experts will be able use their computers and +other intelligent devices much more effectively, reducing their level of +frustration and increasing their productivity and work satisfaction. (New +leisure possibilities will undoubtedly ensue as well!) Computer users will +be able to solve their own computer problems more often, reducing the need +for technical support. +

Even if most users do not program regularly, a familiarity with programming +and the structure of software will make them more effective users of computers. +For example, when something goes wrong, they will be able to make a better +mental model of the likely failure, which will allow them to fix or work +around the problem. They will also be able to assess better when they can +make the changes themselves and when they will need the services of an +expert. They will be more able to converse with experts, since they will +now share more of a common language. An analogy is obtaining basic literacy +in automotive maintenance: you know enough to check your oil and add a +few quarts if necessary, but you also know that you shouldn't try to change +your own brakes. When the mechanic says "your rotors are warped and you +need new pads," you understand what he is talking about. +

If this effort is successful, there could be many millions, eventually +billions of computer programmers, at various levels of proficiency. The +effects this will have on the state of the art of software development +is hard to imagine. The nature of software will change to accommodate the +needs of these programmers, allowing customization through source code +modifications--and personalizations will be plentiful. +

The effort could also have a major impact on getting women and minorities +into computer programming--currently, these groups are vastly underrepresented. +

The recently popular open source movement [OpenSource] is promising +to improve the quality of key software packages through the peer review +of thousands, as well as the ability for programmers to "scratch their +own itch" (i.e., tweak the software in a minor way that only one individual +cares about). We expect that moving from thousands to millions or billions +of programmers will further change the nature of the software development +process. Personal programming will become more important (and feasible) +at this scale, while mass peer review will become relatively less important, +due to diminished returns (the logistics of integrating bug fixes from +thousands of sources is already a formidable task). But most current software, +open source or otherwise, is too complex to allow anyone to do personal +customization without first investing a serious amount of effort and time +into understanding the software they're using. We are interested in changes +to the whole software development process that will fix this as well--in +particular, development tools. +

In +addition, by enabling the programmability of applications by anybody, we +will leverage economies of scale without sacrificing the desire of users +for highly personalized software. Applications can be mass-produced, without +forcing everyone to fit the same mold in their use of the software (or +into just those eddies of customizability planned by the developers). Users +will want to personalize their systems for a number of reasons; these include +becoming more productive, solving a problem peculiar to their needs, or +just expressing their creativity and setting themselves apart from their +peers. They will be able to achieve this if they have the basic programming +literacy we envision. +

Challenges +

Some broad questions help frame our specific research goals, such as: +Will the programming language taught in schools resemble the programming +languages we know today? Will it even be called a programming language? +How will we teach it? Will there be only one language? What other tools +are essential to the teaching and use of this language? Is it even possible +to have a language and tools that are both good for teaching and useful +for experts? +

Just as interesting are questions like these: How and for what purposes +will people use their programming skills? How will a near-universal ability +to read and write computer programs change the structure and utility of +computer software? (This is especially interesting in combination with +future versions of the Internet, which promise high-speed ubiquitous access +to computing and storage elements.) Will people be motivated to actually +program their systems once they have the confidence that they can? Will +they even be interested in the first place? +

A clear concern is the expectation that, if most people are programmers, +many of them will most likely be poor programmers. People who can't +write understandable sentences in their native tongue or balance their +checkbook are unlikely to write well-structured computer programs! Our +intent, however, is to make programming accessible, if not easy, for everyone. +Some users will employ or contract a third party programming and customization +service. This is much like a homeowner contracting out for a remodeling +job. +

We therefore need to investigate ways to improve the quality of the +interaction between the programmer and the system, to help even poor programmers +get the most out of their computers. For example, you might want to write +a program to customize your PDA or toaster, but you might be discouraged +if a small mistake could wipe out your address book or set your house on +fire. Safeguards against disasters are needed, as well as ways of backing +out of unwanted changes to a system as a whole. ("Undo", while very powerful, +usually only applies to one file at a time. Backing out of unwanted global +system changes typically requires a reboot or even painful data restoration +from back-up media.) +

Another concern regards configuration management. Without superior configuration +management, businesses are going to find themselves either unable to correct +problems, or held hostage by programmers who have modified the operating +system or applications in a manner that precludes either upgrading or making +other changes. In general, all locally made changes to large software systems +are currently in danger of being incompatible with future upgrades of the +primary product. Even locally produced software may be rendered unusable +when the primary developer leaves, due to a number of reasons including +lack of testing or documentation. +

Apart from the fear that something might go wrong, another concern for +beginning programmers who are interested in customizing their computer +is the daunting task of trying to understand a large piece of existing +software. We need to look into user-friendly tools for program analysis; +more about this later. Another intellectual challenge is visualization +of (application-generated) data in ways that help novices. Spreadsheets +are of great value here, but not all data fits the matrix form. +

Scripting languages are growing in popularity among professional programmers +[Ousterhout], but questions remain about performance, software reuse, and +integration with components written in other languages. We can address +these challenges by enhancing the facilities of JPython [Hugunin1], a Python +dialect seamlessly integrated with Java, and SWIG, an interface generator +that creates interfaces between scripting languages and systems languages +like C or C++. +

Why +Teach a "General" Programming Language? +

It is well understood that there is something of a dichotomy between +"general" programming languages on the one hand and "domain-specific" languages +on the other. For this discussion, we use the term "general" in a broad +and loose sense, to include functional programming languages and possibly +even logic programming languages, to the extent to which they are usable +as a general programming tool. Turing-completeness is the key concept here. +

The domain-specific category then contains everything else, from command +line argument syntax to email headers and HTML. The distinguishing factor +here is the presence of a relatively narrow application domain. In this +category we also place things like Microsoft's "wizards" (really just sequences +of predefined dialogs connected by simple flow charts) and the controls +and dials on microwave ovens or nuclear reactors. +

A typical property of domain-specific languages is that they provide +excellent control in the application domain for which they were intended, +and (almost) no freedom in unanticipated areas. For example, HTML has no +inherent ability for conditional inclusion of text, or for variable expansion. +(The fact that such features have been added many times as incompatible +extensions merely proves this point.) +

General languages, on the other hand, usually aren't as good in any +particular domain. For example, it is much harder to write a program in +a general language to format a paragraph of text than it is in HTML. However, +general languages make up for this through their Turing-completeness, which +makes it possible to solve any problem that might come up (assuming +availability of sufficient resources). General languages are therefore +ideal when used in combination with domain-specific languages. +

For example, if cell phones were programmable, one would still use the +regular domain-specific interface (the keypad) to dial a specific number, +since that's the most convenient way to access that specific functionality. +However, without programmability, there is no way to make it try several +different numbers for a particular friend until one is answered, unless +the cell phone vendor anticipated this particular feature. +

Why +Start with Python? +

We propose to start by making it possible to teach programming in Python, +an existing scripting language, and to focus on creating a new development +environment and teaching materials for it. We have anecdotal evidence that +Python is a good language to teach as a first programming language. Our +effort will focus on creating tools and educational materials for this +purpose and on fostering a community around those materials. This will +allow us to study in what ways Python is a good (or bad) language for teaching, +and instigate directions for future development. +

Why start with an existing language? Our experience indicates that the +design and implementation of a new language takes years--and that this work +must be (nearly) completed before a user-friendly development environment +and teaching materials can be created. So we jump-start our project by +using an existing language. Depending on user feedback, we may make changes +to Python or design a new language altogether during the project. +

We already have some evidence of where changes might be necessary. Prof. +Randy Pausch at Carnegie Mellon University (see below) has conducted some +usability studies of Python within their limited problem domain. Their +users seemed most confused by the case sensitivity of Python's variable +names and by the truncation of integer division. More extensive and generalized +studies will serve to drive specific changes to Python, or indicate the +need for a newly designed language. +

Python is a good language for teaching absolute beginners. It derives +many of its critical features from ABC, a language that was designed specifically +for teaching programming to non-experts [ABC] [Geurts]. The Python community +has seen many reports from individuals who taught their children programming +using Python. The consensus from these reports is that the language itself +is well suited for this purpose--unlike, for example, C++, Java, Perl, Tcl, +or Visual Basic, which are too cluttered with idiosyncrasies. +

Table 1 on the next page is a (highly subjective) chart comparing a +few relevant aspects of Python to some other languages. From this table +(and our experience), we conclude that Python is a good first choice +for teaching which also serves well as a language for more serious application +development. Unlike other languages proposed for teaching to novices (e.g. +Logo, LogoMation, even Python's ancestor ABC), Python isn't just +a teaching language. It is suitable for developing large real applications, +as shown by projects here at CNRI [Knowbots] [Mailman] as well as elsewhere. +For example, Industrial Light and Magic has converted its entire tool base +to Python and considers this an advantage over the competition. +

Moreover, Python is extensible by modules written in other languages +(e.g. C, C++, or Java), to mediate access to advanced functionality that +is not easily accessible from Python directly (for example, high-speed +3-D computer graphics packages). While we don't expect students to write +these extension modules, the use of such modules makes it possible +to spruce up their learning experience greatly. This extensibility gives +teachers an opportunity to tailor lessons to the interests of their students +by providing them with guarded access to other software packages. +

The fact that Python can be used to develop large applications plays +into a different aspect of our vision, namely the development of open source +application software that can be tailored by users who are not expert programmers, +but have learned some programming skills. Although this is not the focus +of our effort here, we hope that we will see at least some initiatives +towards this goal, and we will encourage companies and organizations wishing +to take steps in this direction. We expect that the existence of JPython +will be an important enabling factor here. +

Python's programming environment and documentation are less than ideal +for teaching to novices. In particular, the existing program development +tools and tutorials for Python (there are several of each) all assume that +the user is a dyed-in-the-wool developer, who knows a suite of external +tools to edit, run and debug programs, and who already knows one or more +other programming languages and their development environments. This currently +stands in the way of more widespread experimentation with Python as a first +programming language. +

+

Table 1. Language comparison chart

+ +
(withdrawn)
+ +

Approach +

We will create a next-generation programming environment and teaching +materials that empower ordinary users to write simple programs and to understand +the structure and organization of larger programs. We will also explore +how widespread programming literacy will affect the production and use +of software in a ubiquitous computing environment. +

Our work is organized into three distinct areas: +

    +
  • +a new computing curriculum suitable for high school and college students.
  • + +
  • +better, easier to use tools for program development and analysis.
  • + +
  • +a user community formed around the above, encouraging feedback and self-help.
  • +
+As explained before, we will initially use the Python programming language. +This will get the world ready for the next step. The "next generation computing +environment" may not use Python, but Python and CP4E are useful experimental +steps in the right direction. +

As soon as initial versions of the newly developed course and tools +are released to the community, the feedback channels will be opened. The +initial feedback will mostly go into improvements of the environment and +teaching materials. This is where the community building begins. +

Curriculum +Development +

A key goal of the CP4E effort is the development of a curriculum for +teaching programming literacy to a range of students, from non-computer +science major undergraduates, down to secondary school and eventually lower- +and middle-school students. The approach for each of these grade levels +may differ so as to better relate to and reach students as they mature, +but CP4E strives to provide a unified approach which will grow as the student +grows, presenting richer and more in-depth topic material along the way. +The initial effort will focus mainly on high school and undergraduate students. +

CNRI will develop the basic materials for the curriculum, including +software that will be used in the teaching environments, and tutorial and +introductory material which may serve as the basis for textbooks on programming. +CNRI will be working closely with educators experienced in producing textbooks +and other teaching materials in order to best tailor these tools for the +intended age groups. +

Our goal is to take the software environments and tools used by more +experienced programmers, and produce versions of these that will be useful +in teaching programming skills. We are inspired by the existing Python +interactive interpreter and by IDLE (a graphical development environment +for Python), both of which can be used either as productivity tools for +professional programmers, or as teaching aides when used in conjunction +with tutorial material. Our new tools will provide useful functionality +for novice and experienced programmer alike. +

New computing +course +

CNRI proposes to work with the University of Chicago to develop a new +course in computer science, using Python as the programming language for +all levels of programming instruction. Python is a particularly appropriate +language for this purpose because it is easy to learn, read, and use, yet +powerful enough to illustrate essential aspects of programming languages +and software engineering. Thus even young students could be taught the +basics of programming using Python, but they would not be limited in their +application domain as they would be with Logo. The use of Python would +allow each student to explore and progress at their own pace. Especially +exciting is the fact that gifted students would have a powerful programming +language and environment already at their fingertips, should they become +motivated to learn more, or at a faster pace. +

The University of Chicago would develop a series of courses that introduce +programming and computer concepts to non-computer science students at the +undergraduate and high-school level. Currently, courses at this level tend +to emphasize either programming languages (with a strong mathematical flavor) +or web-programming topics such as HTML and JavaScript. Unfortunately, both +of these approaches have serious limitations. If a course is excessively +formal and mathematical, it may only appeal to computer science majors +and students of a technical mindset. On the other hand, Web-programming +courses, while capitalizing greatly on the popularity of the Internet, +tend to narrowly focus on specific technologies such as HTML, Perl, or +JavaScript. As a result students learn little about computing within a +greater context or gain the problem solving skills needed to solve the +computational problems of the future. +

The course to be developed at Chicago will address the aspects of computing +that we feel everyone must know in order to be a knowledgeable computer +user: +

    +
  • +Basic computer organization. Students will learn the basics of how computers +work and how they are put together. Topics would include Boolean algebra, +logic, and simple computer architecture (e.g. CPU, memory, I/O). Simply +stated, this is the stuff going on "under the hood"--stated in easily understandable +terms. Ultimately, we would hope to demystify computers as much as possible.
  • + +
  • +An introduction to programming. This will introduce different ways people +have programmed computers. Students will learn about procedural, functional, +and object oriented programming, but in an informal manner. Rather than +trying to turn students into professional programmers, the goal will be +to introduce students to some of the ways people have tried to simplify +the use of computers.
  • + +
  • +Software architecture. In the future, it is increasingly likely that computers +will be programmed largely by assembling existing software components and +writing a small amount of glue code. In order to make this possible, an +understanding of how software is put together will be essential. Student +will learn about software design and software organization (just what in +the heck are all those DLL's anyway?).
  • + +
  • +Debugging and problem solving. How to survive when all else fails--without +having to call customer support.
  • +
+At all levels of education, it is vitally important that usability studies +for both the software tools and the textbook material are conducted and +evaluated. This is the only way that such materials and tools will be improved +and tailored for the specific age and experience groups. Usability studies +of the type conducted by Prof. Pausch of CMU will be developed and conducted +at all three levels of teaching. Of course, we will also develop traditional +tests to allow teachers to measure individual students' performance. +

3D Game +Playing +

We intend to engage in small-scale teaching efforts ourselves, e.g. +at the local high schools listed in the collaboration section, but we don't +expect that we will be doing much teaching. If our experience with Python's +popularity is any indication, we won't have to: others are eager to participate +in this experiment. +

The courses will use the new development environment described in the +next section. As an incentive to make programming more "fun", we intend +to connect the development environment to an existing programmable 3-D +game-playing engine as used in popular computer games. Several such engines +are or will likely become available for use with Python; we will select +one and create an interface library for it suitable to our audience. +

Why use a 3-D game-playing engine? The experiences with Logo show that +graphics are a good way to catch a younger audience's attention, but its +2-D graphics look somewhat boring compared to the video games teenagers +are familiar with these days. Alice is a good example of an engaging 3-D +graphics environment. +

Knowbot +Programs +

In addition to using a 3-D game as a testbed, +we may use CNRI's Knowbot technology [Knowbots] as a motivating application +for novice programmers. Knowbot programs are independent mobile programs +capable of migrating between Knowbot "service stations" (specially equipped +hosts) throughout the Internet. Service stations provide services to the +Knowbot programs such as search services, digital object repositories, +auction services, etc. +

Another way of looking at a Knowbot program is as a small component +working within the larger framework of the service station. A Knowbot program +is a modular, independent program that can be easily written to move around +the Internet, but which has powerful functionality due to its integration +into the framework, and its use of the environments it encounters. +

We will be exploring several ideas on how to use Knowbot programs in +the teaching curriculum. We imagine cooperative gaming scenarios, where +students can create Knowbot programs that exhibit certain behaviors and +must work together to solve a common problem. This would be a great way +to motivate students from all over the Internet to collaborate. +

We might envision treasure hunts, where students have to apply the programming +skills they just learned in order to discover and migrate to a service +station, solve a puzzle at the site, and receive the treasure. We might +design distributed virtual simulations, similar to MIT's Virtual Fishtank +[Fishtank], where students can create their own discrete elements of a +complex system (e.g. implement a virtual fish in a Knowbot program) and +watch how their own elements interact with others. Because the Knowbot +technology allows for highly distributed, very complex interactions across +the entire Internet, it gives us a unique platform for experimenting with +rich cooperative learning opportunities. +

Programming +Tools +

We will design and build a programming environment specifically intended +to support the teaching of programming to users with no previous programming +experience. Our aim is provide tools to support users when they are learning +programming and when they are employing those skills in their homes and +offices. +

We believe that most ordinary users will employ their programming skills +to customized and extend their computing environment. Rather than writing +new programs from scratch, most people will add new code to existing programs. +There are three significant challenges that must be addressed by programming +tools aimed at this audience. +

First, the environment must significantly ease the burden of writing, +installing, and debugging new programs. The current generation of development +tools can be cumbersome for expert users, let alone novices. We must focus +careful design and usability studies on the development of new programming +environments. +

The second challenge is to provide for the continual evolution and modification +of software artifacts by consumers as well as producers. We will develop +tools to help users understand the structure of large programs so that +they can identify where to make changes and what impact those changes will +have. Our tools will also help users manage and configure software, so +that individual components can be replaced or upgraded over time. These +tools will help users share new and modified programs by automatically +tracking versions and dependencies. +

The final challenge is to build tools that will be useful in a ubiquitous +computing environment. The desktop computing environment will be rapidly +overtaken by networks of computer-controlled devices and physical systems. +This new environment exacerbates problems of installing, debugging, and +managing software. It also poses new challenges for system designers to +build software that allows end-user customization. +

This section is organized around these three challenges. The first section +discusses the proposed programming environment. The second section discusses +program analysis and configuration management tools. The third section +discusses application frameworks to support end-user programmability of +ubiquitous computing environments. +

Our approach to this problem will be to look at how traditional programming +tools, such as editors, debuggers, and class browsers, can be augmented +and enhanced by more advanced ways of analyzing, inspecting, and understanding +programs. +

Programming +Environments +

The most basic activities of programmers are editing source code, running +the program to test it, and debugging the program. (Python doesn't have +a separate compilation phase.) A programming environment must of course +support these activities. We have been developing a portable programming +environment for Python named IDLE, which allows the user to execute individual +statements interactively. It is mostly targeted at experienced programmers, +but will server as a starting point for an environment for absolute beginners. +

IDLE only scratches the surface of the kind of programming environment +needed to help novice programmers. For example, its source code colorization +and indentation features could be replaced by a much more powerful program +checker which would point out all syntax errors, undefined identifiers, +type mismatches, and so on, while the user is typing (like a spelling checker). +The debugger could support retracing execution steps, editing the source +code of the running program, etc. The program editor could support a flexible +form of template-based editing (the Alice group has very good experiences +with this in their limited domain). The undo feature, which currently allows +undoing source code changes only, could be extended to undo changes to +the run-time state of the program or even side-effects to the environment +(within reason--we can't expect to undo printing or the sending of an email +message). As an example, the Alice software provides full undo for all +actions involving changes to the 3D world it manages. +

Two specific areas of work are undo and an extended type checker. +

"Undo" is an extremely important tool for beginners because it is the +programmer's first line of defense. Along with version control, auto-save, +and other features, the ability to rollback an unlimited number of near-term +changes means that the programmer has more leeway to experiment and learn. +However, most undo implementations are quite limited in their scope. Our +approach will investigate such concepts as selective and global undo. In +a traditional undo system, the editor simply keeps a linked list of changes +to a file, and those changes can be unapplied or reapplied by moving through +this list (there are variations on this theme, including undo rings, and +undo/redo). One of the problems with traditional undo is where some undesirable +changes overlap with some desirable changes; the programmer often has to +lose the desirable ones to eliminate the undesirable ones. +

With selective undo, changes can be localized to a finer granularity. +For example, suppose a programmer made three changes to function A at the +top of the file intermingled with four changes to function Z at the bottom +of the file. Now the programmer discovers that function A should never +have changed; selective undo allows changes to function A to be rolled +back without affecting the changes to function Z. +

Global undo is similar to what version control provides, where system +level changes can be tagged and rolled back when they adversely affect +the system. Where global undo differs however is that no a-priori decision +has to be made about tagging. +

We also plan to enhance the development environment with type-checking +tools that help programmers find mistakes in their code and improve the +performance of compiled code. Python is a dynamically typed language, like +Smalltalk or Scheme, that relies on extensive runtime checking to ensure +the correct use of built-in operations. Soft typing [Cartwright] is a mechanism +to statically check programs in dynamically typed languages to detect errors +and eliminate unnecessary runtime checks; the analysis is integrated with +the programming environment rather than with the language runtime. This +mechanism has been applied to Scheme [Wright][Flanagan]. We will develop +a similar type checking mechanism for Python. The key challenges for developing +a soft type system for Python are extending the analysis to objects and +modules and accommodating Python's extremely dynamic execution environment, +which allows modification of classes and instances at runtime. +

Preliminary work at CNRI demonstrated the value of type analysis for +improving the performance of JPython programs. Hugunin [Hugunin2] demonstrated +performance improvements of up to three orders of magnitude for JPython. +

Program +Analysis and Configuration Management +

We will augment the basic programming environment with a collection +of tools that aid users in understanding large programs, so that they can +customize and modify them, and in managing the installation and configuration +of software, so that they can upgrade the software without destroying their +modifications. We will also develop and extend tools that build interfaces +between low-level software components and scripting languages, which will +enable greater user control over the low-level components. +

It is important that these program analysis tools, aimed at beginners, +are simple to use, and that they allow grasping the results of the analysis +without +requiring detailed understanding of how the analysis is done. At the same +time, we strive for our tools to be powerful enough for experts too--they +should accommodate increasing expert levels as a user becomes more familiar +with the tool, and they should be able to handle large programs. An analysis +tool that can effectively be applied to, say, the source code of the Netscape +browser, is much more useful than one that only works well for small example +programs. +

Our focus on relatively inexperienced programmers requires that our +tools contain excellent visualization modules, which can present the discovered +design to the user without causing information overload. For example, current +visualization tools often lack "common sense," and will mindlessly produce +large tree or graph diagrams spanning many pages that consist of endlessly +repeated similar substructures; this effect causes the user to lose sight +of the forest through the trees. +

We plan to focus initially on tools that work with Python programs. +However, most of the techniques for program analysis that we expect to +develop are essentially independent of the language being used. We will +also investigate the use of tools that cross language boundaries, so that +users can consider the effects of changes at the scripting level on low-level +components written in C or Java. +

The program analysis tools will help users understand the gross structure +of programs by identifying the relationships between static program components. +One example of this kind of analysis tool is Womble, which extracts object +models from Java bytecodes [Jackson]. Womble extracts object model directly +from source (or object) code, rather than from a formal specification. +Because this method does not rely on the existence of a formal specification +(such as a UML model), we believe it is more accessible to ordinary users. +A similar approach can be used for analyzing Python programs, although +Python's dynamic typing and "first class" functions and classes pose significant +challenges. +

We will also investigate program slicing [Tip] and program paths [Ball] +as techniques to help users understand where to make changes and what impact +those changes will have. Slicing is a well-known technique for identifying +subsets of programs that affect a particular variable. Analysis via program +paths shows the various possible execution paths through a body of code. +Each technique has value for testing and debugging programs. Two challenges +are to apply these techniques across language boundaries and to identify +abstractions boundaries that are implicit in the code but expressed inexactly +by the type system. Womble, for example, recognizes that Java container +classes are not an interesting part of an application's object model; it +merely represents a relationship between the object that uses the container +and the contained objects. Similarly, a program slice could be performed +with respect to certain abstraction boundaries and aspects of the code. +A program slice that presents the functional aspect of a program without +including concurrency-specific code may be useful for understanding the +program structure. (Of course, the concurrency-specific code is important +to understand, but may be a separate concern.) +

A third area of work is one automatic generation of scripting language +interfaces to low-level code such as C, C++, or Java. The SWIG tool [SWIG], +developed by our collaborator David Beazley (see Collaboration Plans section +below), helps users generate scripting language bindings from C and C++. +We will work to improve and extend SWIG to improve the amount of automatic +processing that can be done and to allow greater customization of bindings +by users. We will also enhance SWIG to produce more natural language bindings; +for example, when strings are passed as function parameters in C programs +they are typically represented by two variables, a pointer and a length. +The SWIG bindings should automatically convert between those two C variables +and a single Python string argument. +

If users are empowered to modify and customize code, they will be challenged +to maintain those changes when the underlying software is upgraded or when +system components are replaced. Version control is already a vexing problem +for software developers, who must ensure that their products are compatible +with many operating systems and shared libraries. Users will also want +to share their customizations with others - co-workers or friends and relatives. +We will provide tools to help users maintain and share programs and modifications +to programs. +

One of the most important issues that our programming tools research +will address is the burden that user customizability will place on system +configuration management. When a user makes a change to an application, +what assurances are there that a future update to the application by the +vendor will be compatible with these changes? How does the user himself +keep track of just what changes they've made to an application? What happens +when a future version of the product adds a feature, previously missing, +that the user has added (in a different form)? +

Our tools will help users keep track of changes they've made, through +successive revisions, and help users merge their changes back when the +primary application itself has been modified or updated by the vendor. +A key to this approach is identifying each version of software and a simple +language for describing its properties and dependencies. For example, we +intend to improve version control systems so that they track changes at +different abstraction levels and granularities than current systems, e.g. +labeling changes based on the features they implement instead of the source +files (or parts of files) they modify. The tool will automatically identify +dependencies on other libraries and component. We will investigate ways +to integrate testing frameworks into the configuration management systems +so that when the primary application is upgraded, each feature change a +user has installed, will be merged and tested. +

We will also create community-enhancing tools that make it easier to +share, integrate, and use peer-developed software. Issues to be addressed +include dependency management between packages, ease of installation (and +de-installation!), coping with changes to both the operating system, applications, +and libraries, version control, and package maintenance. Software must +be described and classified, and forums for discussion, feedback, bug reports +and patches (both to the maintainer and from the maintainer) must be established. +Of greatest importance is that these community-building tools must be primarily +managed by the community itself; they must be highly distributed, replicated, +and secure. For example, users could share information about compatibility +problems between various libraries; when coupled with automatic distribution +tools, this information could prevent software upgrades that prevent other +applications from working. +

There are several existing tools that attempt to address some or all +of these issues. The Comprehensive Perl Archive Network attempts to contain +all the Perl material a Perl programmer would ever need [CPAN]. It is distributed +and replicated, and it makes the job of installing Perl modules easier +(though not always easy enough). It is not, however, very adaptable to +other types of archival material. Within the Python community, the distribution-utilities +special interest group is attempting to make the distribution and installation +of third party software easier, but it does not address the wider issues +involved, and again, it is narrowly focused on Python software [Distutils]. +The most ambitious related work we are familiar with is the self-updating +software [Liskov] project. +

Application +Frameworks +

We will examine the impact of future changes in computing and communications +on the way users control computers, and the implications of such developments +as near infinite bandwidth, greater accessibility to much more powerful +computers, the ubiquity of computing resources, and a much greater level +of internetworking, even at the micro-device level. These changes affect +both what kinds of programs users will write and what kinds of computers +those programs will run on. +

Our approach in this area will be to work with experimental and prototype +systems in order to understand how end user programmability should be exposed. +As these technologies mature, we may incorporate our experiences into teaching +materials. +

Many non-programmers begin writing small programs that are used within +specific domains and within the contexts of application frameworks. The +spreadsheet is perhaps the best example of programming in a limited context. +It provides a limited language targeted specifically at manipulating tables +of numerical data. The application provides the coordination framework--managing +the display, control flow, I/O, etc.--and lets the user concentrate on a +specific problem. A macro facility, which is one part of a spreadsheet's +programming suite, aids the use of many applications, allowing users to +automate repetitive tasks. A second example can be found in MS Word macros, +which are also a common form of user customization. +

The Internet has exposed many non-professionals to programming, especially +in domain-specific languages like HTML and active content languages like +JavaScript, PHP and CGI. In these situations, too, non-programmers are +typically creating small programs which fit within the larger context, +for example, of a Web server which takes care of details such as managing +the TCP/IP connections to the clients, setting up the environment in which +the user programs run, handling error situations, and adhering to standard +protocols. +

In the future, non-programmers will be using a plethora of information +appliances. One example area where programmability of these devices will +significantly improve their usefulness is in the management of information +flow--and perhaps more crucially, the limiting of information flow. +A person may have messages arriving over many media--text, voice, video--and +access them via many devices such as PDA, mobile phone, and computer screen. +We expect seamless interoperability, so that for example a mobile phone +can be used to follow up to an email with a voice response without having +to look up the number. Small programs could be used to customize the interfaces +on these devices and to filter and limit the flow of messages through them. +

Some examples include: +

    +
  • +Trying several different phone numbers to reach a person, perhaps depending +on time of day or day of week.
  • + +
  • +Diverting incoming phone calls to voice mail or email when you do not want +to be disturbed-but still letting important calls through.
  • + +
  • +Lowering the volume on TV or radio when you answer the phone.
  • + +
  • +Recording copies of certain phone calls, perhaps by invoking a speech-to-text +converter.
  • + +
  • +Limiting the amount of personal information transferred to stores or companies +as part of an e-commerce transaction.
  • +
+Each of these interface features might be accommodated by the designers +of a particular device. However, feature-rich interfaces are harder to +use, so designers may intentionally limit the interface. It is also likely +that inventive users will always think of features the designer has overlooked. +Allowing for end user programmability and customization lets the user adapt +the device to her particular needs. +

These examples indicate an important pattern in programming scope: users +will be customizing applications and appliances in the context of the system's +computational model and software framework. Thus our expedition will explore +ways to modularize applications, and organize these modules so that users +can add the small bits of functionality they want without having to concern +themselves with the operation of the system as a whole. +

One of the key goals of empowering non-programmers to modify and customize +software in the context of application frameworks or embedded devices is +to reduce the cognitive load required to understand how the modification +fits into the larger program. This is true even for experienced programmers +new to an application's code base. Applications must be modular and provide +sufficient high level abstractions so that their constituent parts can +be understood quickly and independently. This lets people concentrate primarily +on the parts that need to be changed. In our approach we will explore several +ideas intended to improve the modularity of software. +

We intend to look at existing techniques, such as object-oriented programming +and component composition as ways to organize the software. In theory it +is much easier to swap out a black box component for some different functionality, +as long as the interfaces and input/output semantics are maintained. In +reality, it is currently very difficult to write classes and components +that are independent of the rest of the system. We will also be exploring +new concepts such as Aspect Oriented Programming [AOP], a new way of modularizing +software based on cross-cutting concerns. Perhaps some combination of these, +or new modularizing techniques will prove effective, for example, by organizing +each function as an aspect of a component. +

Community +Building +

Besides working with selected partners, we will seek the involvement +of the community at large. We will do this by sharing prototypes of the +developed courses and software through a website, and by soliciting feedback +on those materials through a variety of channels such as newsgroups and +mailing lists. CNRI has considerable experience with community involvement +through the web and via other means. For example, the key focus for the +Python community is the Python website [Python], which also hosts many +Python-related mailing lists; an important focus for the digital library +community is the D-Lib website [D-Lib]. Both sites are run by CNRI. The +existing Python community is already showing great interest in the CP4E +proposal, and we expect that this will be the perfect place to bootstrap +community activities specific to the CP4E effort. +

Such explicit facilities for community involvement will greatly benefit +our research, and allow the community to reap the most benefit from our +research. Benefits of early and large-scale community involvement for our +research will include: volunteers who help "test-drive" our courses and +software prototypes; new courses developed by community members aimed at +specific target audiences or aimed at teaching specific skills or subjects; +localized variants, translations etc. of existing courses; new or modified +examples (you can never have enough examples, and examples that are tailored +to specific audiences are more effective); new applications developed by +and for students of our courses using our program development software; +and so on. In the Python community, we receive many such contributions +(including complete foreign-language translations of key documents) completely +unsolicited! +

Benefits for the community include early access to new courses and software, +and help for teachers in teaching and in convincing their management of +the importance of teaching computer programming to all students (as opposed +to the advanced placement crowd). We also expect that the proposed community +facilities will foster a large amount of self-sufficiency among community +members. For example, in co-tutoring projects, students in need of tutoring +help will find volunteer tutors on the net (often other students who are +more advanced), and teachers will be able to exchange their experiences +directly. This kind of tutoring activity already occurs in the Python community, +and will help defray the load on our research team caused by repeated requests +for help with simple questions. +

In the spirit of "mass computer literacy" and the open source movement +[OpenSource], our website will make the courses and software widely and +freely available. In addition to the website, we will create and maintain +one or more mailing lists with archives, and perhaps a "chat" service for +users. We will actively participate in the mailing lists in order to foster +a community, and also collect and analyze the feedback provided by the +community to us through these (and other) channels. +

It is clear that we consider community involvement essential for the +success of this project. Therefore, we want to go beyond the typical website +setup. We plan to create an automated archival site for teachers, students +and programmers, which can be used to exchange course notes, examples, +useful software, and so on. We also plan to develop prototype software +to aid users in maintaining consistent collections of software packages, +both locally developed and downloaded, on one or more machines. The expected +frequent exchange of extensions, upgrades, patches, end user modifications, +and so on, would cause a nightmare of version control problems using the +existing practice. This is elaborated in the subsection "Sharing and Maintaining" +above. +

Collaboration +Plans +

We will build into the program a certain amount of planned cooperation +with other academic and non-academic institutions in order to ensure the +success of the research. In particular, we propose to subcontract some +activities to groups at Carnegie Mellon University and the University of +Chicago. The Alice group at CMU has successfully used Python as an end +user programming language for their popular virtual reality software; the +University of Chicago has considerable experience and interest in CS curriculum +development. We also plan to work informally with other academic groups +and to open up the participation to others as practicable. +

Carnegie Mellon +University +

The Alice group [Alice] [Pausch], under leadership of Prof. Randy Pausch, +develops affordable 3-D graphics and virtual reality software for Windows, +originally at the University of Virginia and now at Carnegie Mellon University. +They use Python both for end user programming and in the implementation +of large parts of their system (almost everything except the rendering +engine). They probably have the most extensive and best-documented case +study of teaching Python programming (albeit in a limited domain) to users +with no prior programming experience, and their enthusiasm for Python has +been a great encouragement for us to consider using Python in a general +programming curriculum. They are also one of the only groups to apply usability +testing to programming languages and Application Programmer Interfaces. +

We plan to provide the Alice group with limited funding to continue +this part of their research in a mutually beneficial way. We expect to +benefit from their experience in teaching Python to novice users, from +the simple but effective programming tools they have built into the Alice +system, and from their proficiency in user testing--very important for both +the tutorial and the software we plan to develop. They will benefit from +our tutorial (giving Alice users broader instruction in software development) +as well as from our software (more powerful program construction tools). +

University +of Chicago +

The University of Chicago can contribute to the CP4E research effort +in two core areas: curriculum development and software development tools. +We also plan to work with the University of Chicago Laboratory School, +a private K-12 school operated by the University of Chicago. Our liaison +at the University of Chicago is Prof. David Beazley, an experienced Python +user. We plan to provide the University of Chicago with limited funding +for curriculum development. This will be to our benefit because of their +interest and experience in teaching; their benefit will be the use of a +superior programming language and tools. +

Local Schools +

Finally, we plan to work directly with selected local schools to "test-drive" +the developed materials. Working with local schools makes regular face-to-face +meetings with both teachers and students possible; we consider this essential +for the evaluation of our prototype course and software. The Yorktown High +School in Arlington County, Virginia, has already shown interest in this +proposal [Yorktown]. +

Another possible candidate might be the Thomas Jefferson High School +for Science and Technology, a public magnet school in Fairfax County, Virginia, +which already offers a computer science curriculum to advanced students +[TJHSST]. We will be contacting other local schools in Maryland, Virginia, +and the District of Columbia for collaboration purposes during the course +of this project. +

Other Research +Groups +

We also plan to work informally with academic and other research groups +who are developing personal computing hardware and software for the future +("ubiquitous computing" projects); these projects all envision end user +programmability of sorts. Some examples of such projects are Project Oxygen +at MIT [Dertouzos], Portolano/Workscape at Xerox PARC and the University +of Washington [Portolano], and Invisible Computing at CMU. +

We expect that the main benefit for us of such cooperation will be early +deployment of our technology in advanced systems, while their benefit will +be improved end user programmability of the systems they are developing. +Note that the timing is excellent here: widespread deployment of the personal, +embedded systems as envisioned in e.g. Project Oxygen is expected around +the same time that our curriculum and software could be in widespread use. +

Comparison +to Other Research +

ABC. Python's predecessor, ABC, was designed in the early eighties as +a teaching language. Its motto was "stamp out Basic"--acknowledging the +main competition in languages for non-experts at the time. ABC's designers +had a lot of experience teaching "classic" programming languages like ALGOL +to novices. They found that their students were often so overwhelmed by +the incidental details of using a computer language (such as running the +compiler, dealing with different numeric formats, arcane I/O operations, +and low-level memory management) that they never managed to concentrate +on the essentials of good program and algorithm design. +

To counteract this effect, ABC's designers went back to first principles. +They set out to design a language and an environment for that language +that would take care of all the incidentals, leaving the student more time +to learn what's essential in programming independent of the programming +language at hand, such as clear control flow and powerful data structures, +and focusing on the elegant expression of programs. They proposed both +a new language design and new terminology that deviated radically from +what was (and still is) current among computer scientists and programmers. +In fact, the single largest reason why ABC didn't make as much of an impact +as expected is probably that they deviated too much from current practice. +The people who had access to the hardware that was needed to run ABC (initially +it only ran on Unix system, although it was later ported to the Mac and +PC) were often experienced computer users who felt frustrated that ABC +didn't "speak the same language" as the rest of their applications. +

About a decade later, Python grew out of this frustration. It shares +ABC's focus on elegance of expression, fundamentals of programming, and +taking away incidentals, but adds object-orientation, extensibility, and +a powerful library of modules that interface to other applications, via +many different mechanisms: shared files, program embedding, RPC interfaces +like CORBA or COM, and network protocols (supporting all the protocols +typically used on the Internet). +

Logo. Really a family of languages related to Lisp and mostly +developed at MIT, Logo is of course the most well-known programming language +for children. It has a rich tradition, strong roots in schools, and a number +of commercial offerings. There is ongoing research being done by the Epistemology +and Learning Group at the MIT Media Lab, e.g. the "programmable brick" +(in cooperation with LEGO). +

A key difference between Logo and our proposal lies in our vision that +millions of (amateur) programmers will be developing open source software +together--Logo appears content with teaching limited programming skills +to younger children, for whom computer programming is mostly a way to train +their mind in abstract thinking. Logo also has limited applicability in +the real world of software development. +

LogoMation. A company called Magic Square sells LogoMation, a +language not unlike Logo, with a similar emphasis on turtle graphics. It +comes with an excellent tutorial suitable for children from 8 up. LogoMation's +syntax is similar to Python (more so than Logo's syntax); which suggests +that we're on the right track with Python. +

But like Logo, LogoMation is limited in the growth path it offers. It +doesn't directly address the issue of "what next," expecting its users +to move on to other programming languages for real work. +

Alice. The testimonials on the Alice website clearly indicate +that Alice is successful at teaching programming to children as well as +to adults with no prior computer experience. It also indicates the importance +of a "fun" environment (and Alice's 3-D graphics are more attractive than +Logo's turtle graphics). Alice also gives us some hints on what aspects +of Python could be improved: for example, their experiences suggest that +Python's case-sensitivity is a problem. +

However, the emphasis of the Alice project is on 3-D graphics--the Alice +tutorial doesn't really teach much in the way of program or data structuring +techniques. While we agree that 3-D graphics are a great way to create +and keep a young audience captive, we are interested more in teaching programming +in general, not just graphics. For this reason, the emphasis in our initial +work will be on the development of a programming environment and tutorial +where 3-D graphics is just one of the possible uses for a computer. +

DrScheme. The TeachScheme! Project at Rice University [TeachScheme] +aims to develop a new introductory computing curriculum based on the Scheme +programming language. A central part of the Rice effort is the development +of DrScheme [Findler], a programming environment targeted at beginning +students. The focus of TeachScheme is on a relatively narrow audience--college +students who have a solid grounding in high school algebra and an interest +in studying computing and its application to scientific problems. We envision +a much wider audience, where the assumptions about a strong math background +and interest in scientific problems do not hold. We also expect that Scheme, +a language that excels in exposing the fundamental building blocks of computation +for pedagogical purposes, would be inappropriate for a mass audience. +

It is interesting to note, however, that one of the key parts of the +TeachScheme project is a development environment. While the audiences and +approach are different, our project and TeachScheme share a sense that +the development environment is a crucial component. There is a need for +an interactive read-eval-print loop, a powerful debugger, and tools to +understand how programs work. +

Facilities +

We will use CNRI's existing computing infrastructure for development +and distribution of the proposed materials, augmented with desktop workstations +and a web server purchased specifically for this project. We will use the +Internet and the World-Wide Web for all distribution of materials. +

List +of Key Personnel +

Guido van Rossum will lead this effort at CNRI. He is a group leader +at CNRI, and is the creator of Python, for which he still serves as the +key developer. He is also the lead designer of the Knowbot mobile agent +system. In the past he has worked on ABC, a programming language developed +for teaching purposes, and Amoeba, a well known distributed operating system +developed in the 80s. He has a Masters' degree in mathematics and computer +science from the University of Amsterdam. +

Jeremy Hylton is a senior member of the CNRI technical staff. He is +one of the designers of the Knowbot mobile agent system, and has designed +and implemented several agent-based information management applications. +He received a M.Eng. in electrical engineering and computer science and +an S.B. in computer science and engineering from the Massachusetts Institute +of Technology, both in 1996. +

Barry Warsaw is a senior member of the CNRI technical staff. He has +been a contributing designer to several CNRI projects including the Application +Gateway System, the Knowbot Operating Environment, and JPython. He has +contributed to development of the Python language and to the Grail Internet +Browser. He received a B.S. in computer science from the University of +Maryland in 1984. Previous to CNRI, he worked on robotic systems operator +interfaces at the National Institute of Standards and Technology from 1980 +through 1990, and on medical database information technology at the National +Library of Medicine from 1990 through 1994. +

Statement +of Work +

CNRI will perform the following work: +

    +
  • +Develop a prototype programming environment for Python, including program +analysis and management tools suitable for use by novices.
  • + +
  • +Develop a prototype tutorial to teach programming using Python to non-programmers, +especially in high school or college, using the above programming environment.
  • + +
  • +Develop example software aimed at the above audience; for example, a Python +extension that allows the manipulation of a third-party 3-D game-playing +environment.
  • + +
  • +Set up and maintain a website and mailing lists promoting the above software +and tutorial and soliciting feedback.
  • + +
  • +Collaborate with selected high schools and universities.
  • + +
  • +Engage in small-scale teaching and user testing efforts.
  • + +
  • +Collect feedback regarding the above software and tutorial from users, +students and teachers and use this to improve the software and tutorial. +Also use it to improve the Python language itself or to propose a better +language.
  • + +
  • +Publish a final report documenting the research, the lessons learned, the +results of the research, and the recommended follow-on research.
  • +
+The Alice group at CMU will perform the following work: +
    +
  • +Integrate CNRI-developed tools into Alice.
  • + +
  • +User testing of CNRI-developed tools and tutorial.
  • +
+The University of Chicago will perform the following work: +
    +
  • +Work with CNRI to develop the CNRI-developed tutorial into a CS curriculum +suitable for high school, and separately into a CS course suitable for +non-CS undergraduates in college.
  • + +
  • +Teach classes using the developed curriculum in order to provide feedback.
  • +
+In order to maximize access to the materials produced, all software, educational +materials, and reports produced for this project will be made freely available +on the World-Wide Web as open source material. +

Schedule +

We envision the following schedule for the effort: +

    +
  • +Year 1. Initial research at CNRI: develop initial prototype programming +environment; design program analysis and measurement tools; develop first +version of tutorial; develop contacts with other researchers and with interested +teachers.
  • +
+ +
    +
  • +Year 2: At CNRI: initial implementation of program analysis and measurement +tools; collect feedback from first software and tutorial experiences. At +CMU: start working on integrating CNRI-developed tools into Alice and start +user testing. At U of C: start working on curriculum development for high +school and college students.
  • +
+ +
    +
  • +Year 3: Continue above activities. In addition, at CNRI: integrate first +program analysis and measurement tools into programming environment; small-scale +roll-out of enhanced programming environment; develop initial example applications; +define evaluation criteria for success. At CMU: user testing of program +analysis tools. At U of C: integrate use of program analysis tools into +curriculum.
  • +
+ +
    +
  • +Year 4: Continue above activities, completing most of them. In addition, +at CNRI: large-scale roll-out of enhanced programming environment; refine +example applications; start large-scale collection of end user feedback; +start working on Python language changes. At CMU: Completion of user testing, +integration into Alice. At U of C: completion and roll-out of curriculum.
  • +
+ +
    +
  • +Year 5: Project completion: report experiences, evaluate success, technology +transfer to educational world and industry.
  • +
+Optional +Tasks +

There are no optional tasks in the proposal. +

References +

[ABC] +

+http://www.cwi.nl/~steven/abc/ + +[Ball] + +Thomas Ball and James R. Larus. Programs Follow Paths. Microsoft Research +Technical Report MSR-TR-99-01, Jan. 1999. + +[Alice] + +http://www.alice.org/ + +[AOP] + +Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina +Videira Lopes, Jean-Marc Loingtier, John Irwin. Aspect-Oriented Programming. +
In Proceedings of the European Conference on Object-Oriented Programming +(ECOOP), Finland. Springer-Verlag LNCS 1241. June 1997. +

http://www.parc.xerox.com/spl/projects/aop/

+
+[Blair] + +http://www.mbhs.edu/ + +[Cartwright] + +Robert Cartwright and Matthias Felleisen. Program verification through +soft typing. ACM Computing Surveys, June 1996, 28(2): 349-351. + +[CPAN] + +http://www.cpan.org/ + +[Dertouzos] + +Michael L. Dertouzos. The Future of Computing. Scientific American, +Aug. 1999. + +[Distutils] + +http://www.python.org/sigs/distutils-sig/ + +[D-Lib] + +http://www.dlib.org/ + +[Findler] + +Robert Bruce Findler, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, +and Matthias Felleisen. DrScheme: a pedagogic programming environment for +Scheme. In Proceedings of the 1997 Symposium on Programming Languages: +Implementations, Logics, and Programs, Southampton, UK, Sept. 1997. +(Lecture Notes in Computer Science, Vol. 1292.) + +[Fishtank] + +http://el.www.media.mit.edu/groups/el/projects/fishtank/ + +[Flanagan] + +Cormac Flanagan and Matthias Felleisen. Componential Set-Based +Analysis. ACM Transactions of Programming Languages and Systems, to appear. + +[Geurts] + +Leo Geurts, Lambert Meertens, Steven Pemberton. The ABC Programmer's +Handbook. Prentice-Hall, 1990. + +[Hugunin1] + +Jim Hugunin. Python and Java - The best of both worlds. In Proceedings +of the 6th International Python Conference, San Jose, Ca., Oct. 1997, +pp. 11-20. + +[Hugunin2] + +Jim Hugunin. JPython Update. Invited talk, 7th International Python +Conference. Houston, Tex., Nov. 1998. PowerPoint slides: http://www.jpython.org/jpython-talk-1.ppt + +[Jackson] + +Daniel Jackson and Allison Waingold. Lightweight Extraction of Object +Models from Bytecode. In Proceedings of the International Conference on +Software Engineering, Los Angeles, Ca., May 1999. + +[JPython] + +http://www.jpython.org/ + +[Knowbots] + +http://www.cnri.reston.va.us/home/koe/ + +[Liskov] + +http://sdg.lcs.mit.edu/~dnj/research/self-updating.html + +[Logo] + +http://el.www.media.mit.edu/groups/logo-foundation/ + +[LogoMation] + +http://www.magicsquare.com/LM2/ + +[Lutz] + +Mark Lutz. Programming Python. O'Reilly, 1996. + +[Mozilla] + +http://www.mozilla.org/ + +[Mailman] + +http://www.list.org/ + +[Ousterhout] + +John K. Ousterhout. Scripting: Higher Level Programming for the 21st +Century. IEEE Computer, March 1998. + +[Papert] + +Mindstorms: Children, Computers, and Powerful Ideas. New York: +Basic Books, 1980. + +[Pausch] + +Randy Pausch, Tommy Burnette, A.C. Capeheart, Matthew Conway, Dennis +Cosgrove, Rob DeLine, Jim Durbin, Rich Gossweiler, Shuichi Koga, Jeff White. +Alice: +Rapid Prototyping System for Virtual Reality. IEEE Computer Graphics +and Applications, May 1995. + +[Portolano] + +http://www.cs.washington.edu/research/projects/portolano/ + +[Python] + +http://www.python.org/ + +[SWIG] + +http://www.swig.org/ + +[Tip] + +Frank Tip. A survey of program slicing techniques. Journal of Programming +Languages, 3(3):121-189, September 1995. + +[TeachScheme] + +http://www.cs.rice.edu/CS/PLT/Teaching/ + +[TJHSST] + +http://www.tjhsst.edu/ + +[Yorktown] + +http://yhspatriot.yorktown.arlington.k12.va.us/ + +[Watters] + +Aaron Watters, Guido van Rossum, Jim Ahlstrom. Internet Programming +with Python. MIS Press/Henry Holt, 1996. + +[Wright] + +Andrew +K. Wright, +Robert +Cartwright. +A Practical Soft Type System for Scheme. ACM Transactions +of Programming Languages and Systems, Jan. 1997, 19(1): 87-152. + + + \ No newline at end of file From tismer at codespeak.net Tue Oct 14 21:01:41 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 21:01:41 +0200 (MEST) Subject: [pypy-svn] rev 1931 - pypy/trunk/doc/funding/proposal Message-ID: <20031014190141.DEB355A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 21:01:41 2003 New Revision: 1931 Added: pypy/trunk/doc/funding/proposal/cp4e.pdf (contents, props changed) Log: added cp4e PDF Added: pypy/trunk/doc/funding/proposal/cp4e.pdf ============================================================================== Binary file. No diff available. From hpk at codespeak.net Tue Oct 14 21:08:44 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 21:08:44 +0200 (MEST) Subject: [pypy-svn] rev 1932 - pypy/trunk/doc/funding Message-ID: <20031014190844.C29195A1EE@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 21:08:43 2003 New Revision: 1932 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: fixed ReST issues. Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Tue Oct 14 21:08:43 2003 @@ -1,8 +1,8 @@ Other Issues -================== +============ Ethical Considerations ------------------------ +---------------------- A. Proposers are requested to fill in the following table @@ -43,7 +43,7 @@ listed in section B YES. Gender Issues ----------------- +------------- Women are chronically (and increasingly) underrepresented in the computer field; particularly among designers of software and products. @@ -136,7 +136,7 @@ far as we know, no other language has this feature. Other Policy related Issues ------------------------------ +--------------------------- As we mentioned before, one of the greatest threats to European competitiveness is its dependence upon proprietary closed source @@ -213,13 +213,7 @@ Is any of this so, or just hope? Art - - _______________________________________________ - Edu-sig mailing list - Edu-sig at python.org - http://mail.python.org/mailman/listinfo/edu-sig - ------------------------------------------------------ - + Here is somebody who is hoping we can give him a language he can understand and use without learning C. He is the author of PyGeo, a dynamic geometry laboratory and toolkit, commonly used by elementary From tismer at codespeak.net Tue Oct 14 21:15:54 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 21:15:54 +0200 (MEST) Subject: [pypy-svn] rev 1933 - pypy/trunk/doc/funding Message-ID: <20031014191554.2DA0D5A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 21:15:53 2003 New Revision: 1933 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: ReST fixes Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Tue Oct 14 21:15:53 2003 @@ -302,6 +302,6 @@ We believe that what we intend to do is a perfect fit for the goals of this call. -.. mail http://starship.python.net/pipermail/python-de/2003q1/002925.html +.. _mail: http://starship.python.net/pipermail/python-de/2003q1/002925.html -.. Psyco http://psyco.sourceforge.net/introduction.html +.. _Psyco: http://psyco.sourceforge.net/introduction.html From tismer at codespeak.net Tue Oct 14 21:19:06 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 21:19:06 +0200 (MEST) Subject: [pypy-svn] rev 1934 - in pypy/trunk/doc/funding: . Z1_background makedoc proposal Message-ID: <20031014191906.BACC45A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 21:19:05 2003 New Revision: 1934 Added: pypy/trunk/doc/funding/Z1_background/ pypy/trunk/doc/funding/Z1_background/Z1_background.sxw (contents, props changed) pypy/trunk/doc/funding/proposal/Z1_background.pdf (contents, props changed) Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt pypy/trunk/doc/funding/makedoc/part_b.sxw Log: Z1_background added as appendix Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Tue Oct 14 21:19:05 2003 @@ -167,7 +167,7 @@ learn. But let us quote an article posted to the Python-in-Education -mailing list in its entirity. +mailing list in its entirity:: Date: Sun, 14 Sep 2003 11:52:05 -0400 From: Arthur Added: pypy/trunk/doc/funding/Z1_background/Z1_background.sxw ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Added: pypy/trunk/doc/funding/proposal/Z1_background.pdf ============================================================================== Binary file. No diff available. From hpk at codespeak.net Tue Oct 14 21:41:25 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Tue, 14 Oct 2003 21:41:25 +0200 (MEST) Subject: [pypy-svn] rev 1935 - pypy/trunk/doc/funding Message-ID: <20031014194125.176D25A1EE@thoth.codespeak.net> Author: hpk Date: Tue Oct 14 21:41:25 2003 New Revision: 1935 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: the appendices are now named Zn, this is currently Z1 Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Tue Oct 14 21:41:25 2003 @@ -1,5 +1,5 @@ -Appendix A: History and background -================================== +Appendix Z1: History and background +=================================== Why Python? What is Python? --------------------------- From tismer at codespeak.net Tue Oct 14 22:33:20 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Tue, 14 Oct 2003 22:33:20 +0200 (MEST) Subject: [pypy-svn] rev 1937 - in pypy/trunk/doc/funding: Z1_background makedoc proposal Message-ID: <20031014203320.EE9C15A1EE@thoth.codespeak.net> Author: tismer Date: Tue Oct 14 22:33:18 2003 New Revision: 1937 Added: pypy/trunk/doc/funding/makedoc/part_b_appendices.sxw (contents, props changed) Modified: pypy/trunk/doc/funding/Z1_background/Z1_background.sxw pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/Z1_background.pdf pypy/trunk/doc/funding/proposal/part_b.pdf Log: part B with appendices. Have done quite some formatting, although I know it will happen again... Modified: pypy/trunk/doc/funding/Z1_background/Z1_background.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Added: pypy/trunk/doc/funding/makedoc/part_b_appendices.sxw ============================================================================== Binary file. No diff available. Modified: pypy/trunk/doc/funding/proposal/Z1_background.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From nico at codespeak.net Tue Oct 14 23:06:45 2003 From: nico at codespeak.net (nico at codespeak.net) Date: Tue, 14 Oct 2003 23:06:45 +0200 (MEST) Subject: [pypy-svn] rev 1939 - pypy/trunk/doc/funding Message-ID: <20031014210645.F29A05A23D@thoth.codespeak.net> Author: nico Date: Tue Oct 14 23:06:45 2003 New Revision: 1939 Modified: pypy/trunk/doc/funding/makefile pypy/trunk/doc/funding/project_gantt.png Log: updated gantt. Modified: pypy/trunk/doc/funding/makefile ============================================================================== --- pypy/trunk/doc/funding/makefile (original) +++ pypy/trunk/doc/funding/makefile Tue Oct 14 23:06:45 2003 @@ -7,5 +7,5 @@ xsltproc nico/p2total.xsl project_planning.xml | python nico/bt.py > budget_summary.html project_gantt.png: project_planning.xml project_resources.xml - pygantt --timestep 84 --display-resources --renderer png --detail 0 --colors-file pyganttrc project_planning.xml > project_gantt.png + pygantt --timestep 140 --display-resources --renderer png --detail 0 --colors-file pyganttrc project_planning.xml > project_gantt.png Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From jacob at codespeak.net Tue Oct 14 23:16:03 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 23:16:03 +0200 (MEST) Subject: [pypy-svn] rev 1940 - pypy/trunk/doc/funding Message-ID: <20031014211603.765C65A23D@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 23:16:02 2003 New Revision: 1940 Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Log: true figures for Change Maker. Modified: pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp13_integration_config.txt Tue Oct 14 23:16:02 2003 @@ -50,7 +50,7 @@ **Deliverables** - D13.1 A release of PyPy with all available optimization and runtime features -- D13.2 A build- and configuration tool that allows to build custom PyPy versions suitable for specialized environments like small or very large computing devices. +- D13.2 A build- and configuration tool that allows to build custom PyPy versions suitable for specialized environments like small or very large computing devices .. include:: wp-tableend.asc From jacob at codespeak.net Tue Oct 14 23:16:38 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Tue, 14 Oct 2003 23:16:38 +0200 (MEST) Subject: [pypy-svn] rev 1941 - pypy/trunk/doc/funding Message-ID: <20031014211638.6436F5A23D@thoth.codespeak.net> Author: jacob Date: Tue Oct 14 23:16:37 2003 New Revision: 1941 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: Really true figures for Change Maker. Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Tue Oct 14 23:57:50 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Tue, 14 Oct 2003 23:57:50 +0200 (MEST) Subject: [pypy-svn] rev 1942 - pypy/trunk/doc/funding Message-ID: <20031014215750.429845A23D@thoth.codespeak.net> Author: pedronis Date: Tue Oct 14 23:57:49 2003 New Revision: 1942 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: minor fixes: Java EJB -> RMI Prevalance? I have'nt find a reference to such a package, if it exists please restore. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Tue Oct 14 23:57:49 2003 @@ -332,7 +332,7 @@ We will study which of these implementations is best suited for being moved into the interpreter itself. These include transparent interfaces to remote -objects (CORBA, Java EJB...), transparent distribution of objects, and +objects (like CORBA, Java RMI...), transparent distribution of objects, and transparent distribution of processes themselves. For example, a foreseen solution for the CORBA model would be to design a proxying Object Space that delegates operations to a remote CORBA object server over the network, thus @@ -348,16 +348,17 @@ subject has been studied extensively, and there are several implementations already available. -We are considering at this point ZODB, the Zope Database engine, and PyPerSyst -and Prevalence, which are quite complete. Their respective developers have -already expressed high interest in PyPy. Indeed, they would benefit from -better language integration; they currently put non-natural constrains on the -programmer in terms of what he is allowed to do for persistence to actually -work transparenty. Typically, it is not possible for a library to detect -changes such as adding elements to lists, so that list objects cannot be -automatically marked as "dirty" (as needed to ensure they will transparently -be saved when necessary). This requires language support, and more -specifically an extension or proxy Object Space. +We are considering at this point ZODB, the Zope Database engine, and +PyPerSyst, which are quite complete. Their respective developers have +already expressed high interest in PyPy. Indeed, they would benefit +from better language integration; they currently put non-natural +constrains on the programmer in terms of what he is allowed to do for +persistence to actually work transparenty. Typically, it is not +possible for a library to detect changes such as adding elements to +lists, so that list objects cannot be automatically marked as "dirty" +(as needed to ensure they will transparently be saved when +necessary). This requires language support, and more specifically an +extension or proxy Object Space. Language-level extensions From pedronis at codespeak.net Wed Oct 15 00:19:57 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 00:19:57 +0200 (MEST) Subject: [pypy-svn] rev 1943 - pypy/trunk/doc/funding Message-ID: <20031014221957.D414B5A23D@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 00:19:56 2003 New Revision: 1943 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: added comments on how to we can have control on orthogonality issues between low-level aspects. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Wed Oct 15 00:19:56 2003 @@ -104,22 +104,27 @@ We are giving translation an innovative emphasis (and thus a whole workpackage, WP05_) in the project. It is not only an RPython-to-C translator; it is a source-to-source transformer, and as such an -essential part of our flexibility goals. Numerous aspects -that used to be design decisions influencing the whole source code of the -current CPython have by now become merely customizable behaviour of the -translator. Indeed, instead of hard-coding such design decisions, we will -keep the PyPy source as simple as possible, and "plug-in" the required -knowledge into the translator. For example, the high-level source need not be -concerned about memory management issues (garbage collection, reference -counting...); this aspect can be "weaved" into the low-level code by the -translator. This point is essential for the separation of concerns. It has -deep advantages over the classic monolithic approach, ranging from education -(the main source base is not encumbered by details) to raw performance (choice -of appropriate low-level models based on real-world context-dependent measures -and comparisons). Also note this architecture's extreme adaptability: instead -of generating C code, it is straightforward to target other runtime -environments like Java or .NET. By contrast, today's costs of maintaining -several evolving implementations (CPython, Jython for Java...) are very high. +essential part of our flexibility goals. Numerous aspects that used to +be design decisions influencing the whole source code of the current +CPython have by now become merely customizable behaviour of the +translator. Indeed, instead of hard-coding such design decisions, we +will keep the PyPy source as simple as possible, and "plug-in" the +required knowledge into the translator. For example, the high-level +source need not be concerned about memory management issues (garbage +collection, reference counting...); this aspect can be "weaved" into +the low-level code by the translator. This point is essential for the +separation of concerns. Weaving aspects will be done mainly as +intermediate stages, for example as transformations on the +intermediate representation used by the translator, allowing control +over orthogonality issues between aspects. This whole approach has +deep advantages over the classic monolithic one, ranging from +education (the main source base is not encumbered by details) to raw +performance (choice of appropriate low-level models based on +real-world context-dependent measures and comparisons). Also note this +architecture's extreme adaptability: instead of generating C code, it +is straightforward to target other runtime environments like Java or +.NET. By contrast, today's costs of maintaining several evolving +implementations (CPython, Jython for Java...) are very high. The translation process itself requires some kind of analysis of the RPython code. Among the various ways to perform this analysis we will most probably From pedronis at codespeak.net Wed Oct 15 00:26:27 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 00:26:27 +0200 (MEST) Subject: [pypy-svn] rev 1944 - pypy/trunk/doc/funding Message-ID: <20031014222627.0782F5A23D@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 00:26:27 2003 New Revision: 1944 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: typos. Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Wed Oct 15 00:26:27 2003 @@ -50,7 +50,7 @@ ------- The first goal is to develop a reasonably complete Python interpreter written -in Python. It must be entierely compatible with the language specification. It +in Python. It must be entirely compatible with the language specification. It consists of the following major parts: - A *bytecode compiler,* which inputs Python source code and outputs an internal @@ -141,7 +141,7 @@ usual sense of the word. The net result is that we can actually analyse RPython source code without writing any code specific to the language (!), given that we already have a bytecode interpreter which is flexible enough to -accomodate a non-standard Object Space. In other words, the combination of +accommodate a non-standard Object Space. In other words, the combination of PyPy and an "abstract" Object Space performs as the front-end of the translator, and can be used to translate (for example) the regular PyPy interpreter and its standard Object Space. Note the two different roles played @@ -194,7 +194,7 @@ environment. Such data is notoriously hard to obtain in monolithic interpreters. This is the focus of WP06_. -- Similarily, as described above, pervasive design decisions can be +- Similarly, as described above, pervasive design decisions can be experimented with by tailoring the translator. This is the focus of WP07_. We will in particular investigate in detail two specific ways to customize the @@ -219,7 +219,7 @@ turn individual operation orders into processor instructions, together with a supporting runtime systems. This is defined by WP08_. -In dynamic languges, the truth behind JIT compiling is a bit more involved +In dynamic languages, the truth behind JIT compiling is a bit more involved than the above paragraph suggests. All the "standard" operations in Python, including intuitively simple ones, are in fact relatively complex because they depend heavily on the runtime type of the objects involved. This complex @@ -328,9 +328,9 @@ feature that would benefit from being implemented at the language level. This is a vast subject which has been studied extensively. There are several implementations already available in Python, with varying degrees of -transparence. None however can be fully transparent by definition of the +transparency. None however can be fully transparent by definition of the language itself, which allows introspection -- a program using introspection -features could thus defeat the delicate mecanisms introduced by a network +features could thus defeat the delicate mechanisms introduced by a network distribution library. Moreover, such libraries typically impose additional constrains, e.g. are only able to move objects over a network if they are of a class inheriting from a particular class. @@ -358,7 +358,7 @@ already expressed high interest in PyPy. Indeed, they would benefit from better language integration; they currently put non-natural constrains on the programmer in terms of what he is allowed to do for -persistence to actually work transparenty. Typically, it is not +persistence to actually work transparently. Typically, it is not possible for a library to detect changes such as adding elements to lists, so that list objects cannot be automatically marked as "dirty" (as needed to ensure they will transparently be saved when @@ -493,7 +493,7 @@ - performing backups for all relevant information/code; - setting up a mirror repository which is kept up-to-date and which can be - used readonly in case of failure of the main repository; + used read-only in case of failure of the main repository; - taking care of regular repository backups, designing a strict backup policy suitable for the project, and adhering to it. From alastair at codespeak.net Wed Oct 15 10:04:43 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Wed, 15 Oct 2003 10:04:43 +0200 (MEST) Subject: [pypy-svn] rev 1945 - pypy/trunk/doc/funding Message-ID: <20031015080443.A9F215A23D@thoth.codespeak.net> Author: alastair Date: Wed Oct 15 10:04:42 2003 New Revision: 1945 Modified: pypy/trunk/doc/funding/A3_draft.xls pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/B6.7.wp04_core.txt pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt pypy/trunk/doc/funding/manpower-overview.xls pypy/trunk/doc/funding/project_planning.xml Log: Updated the DFKI's cost figures Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 10:04:42 2003 @@ -658,7 +658,7 @@ |WP3: Synchronisation | | 12| | | | | | 12| |with Standard Python | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ -|WP4: PyPy Core | 5| | 9| 18| | 4| | 36| +|WP4: PyPy Core | 2| | 9| 18| | 4| | 33| +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP5: PyPy Translation| | 9| 9| 3| 18| | | 39| +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ @@ -671,9 +671,9 @@ |WP8: Dynamic | | | 9| 9| 18| | | 36| |Optimisations | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ -|WP9: Search and Logic| 16| | | | | 9| | 25| +|WP9: Search and Logic| 10| | | | | 9| | 19| +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ -|WP10: Aspects and | 6| | | | | 9| | 15| +|WP10: Aspects and | 3| | | | | 9| | 12| |Contracts | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |WP11: Specialised | | | | | | 9| 1| 10| @@ -688,7 +688,7 @@ +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ -|Total Research and | 27| 36| 48| 82| 48| 31| 1| 273| +|Total Research and | 15| 36| 48| 82| 48| 31| 1| 261| |Innovation | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ |Management | | | | | | | | | @@ -705,6 +705,6 @@ +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | | | | | | | | | | +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ -|Total | 35| 36| 48| 94| 56| 31| 21| 321| +|Total | 23| 36| 48| 94| 56| 31| 21| 309| +---------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ Modified: pypy/trunk/doc/funding/B6.7.wp04_core.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp04_core.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp04_core.txt Wed Oct 15 10:04:42 2003 @@ -8,7 +8,7 @@ .. |p2| replace:: MPI .. |m2| replace:: 9 .. |p3| replace:: DFKI -.. |m3| replace:: 5 +.. |m3| replace:: 2 .. |p4| replace:: Logilab .. |m4| replace:: 4 .. |p5| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Wed Oct 15 10:04:42 2003 @@ -4,7 +4,7 @@ .. |wp| replace:: WP09 .. |start| replace:: 9 .. |p1| replace:: DFKI -.. |m1| replace:: 15 +.. |m1| replace:: 10 .. |p2| replace:: Logilab .. |m2| replace:: 9 .. |p3| replace:: |e| Modified: pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp10_aspects_and_contracts.txt Wed Oct 15 10:04:42 2003 @@ -6,7 +6,7 @@ .. |p1| replace:: Logilab .. |m1| replace:: 9 .. |p2| replace:: DFKI -.. |m2| replace:: 6 +.. |m2| replace:: 3 .. |p3| replace:: |e| .. |m3| replace:: |e| .. |p4| replace:: |e| Modified: pypy/trunk/doc/funding/manpower-overview.xls ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/project_planning.xml ============================================================================== --- pypy/trunk/doc/funding/project_planning.xml (original) +++ pypy/trunk/doc/funding/project_planning.xml Wed Oct 15 10:04:42 2003 @@ -41,7 +41,7 @@ 9 2004/01/01 - + @@ -103,7 +103,7 @@ 15 - + @@ -111,7 +111,7 @@ 9 - + From lac at codespeak.net Wed Oct 15 10:52:00 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 10:52:00 +0200 (MEST) Subject: [pypy-svn] rev 1946 - pypy/trunk/doc/funding Message-ID: <20031015085200.611315A23D@thoth.codespeak.net> Author: lac Date: Wed Oct 15 10:51:59 2003 New Revision: 1946 Modified: pypy/trunk/doc/funding/endorsements.asc Log: Add Christian Tanzer. I've asked him for a bit of revision, let the world know he is in Austria ... Modified: pypy/trunk/doc/funding/endorsements.asc ============================================================================== --- pypy/trunk/doc/funding/endorsements.asc (original) +++ pypy/trunk/doc/funding/endorsements.asc Wed Oct 15 10:51:59 2003 @@ -34,6 +34,26 @@ Itamar Shtull-Trauring Chief Technology Architect, Zoteca +- + I'm an independent software developer and consultant. My current + focus is the development of design tools, code generators, and + monitoring tools for embedded, distributed, real-time systems + (often applied in safety-critical domains). I have been using + Python with great success for these application domains. + + A successful PyPy would increase the benefits of using Python: + + - it would allow me to even more functionality into + Python and further reduce the amount of C code needed for the + on-line part of such systems (which is running on PC-class HW). + + - it might allow to replace (some but not nearly all) C code in + the embedded parts of such systems. + + - it might substantially improve the performance of the design + tools and code generators. + + Christian Tanzer - As a vendor of development tools for Python programmers, we support PyPy From hpk at codespeak.net Wed Oct 15 10:52:14 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 10:52:14 +0200 (MEST) Subject: [pypy-svn] rev 1947 - pypy/trunk/doc/funding Message-ID: <20031015085214.B9F8C5A23D@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 10:52:12 2003 New Revision: 1947 Modified: pypy/trunk/doc/funding/B0.1_summary.txt pypy/trunk/doc/funding/B4.resources.txt pypy/trunk/doc/funding/B5.0_manage_bea.txt pypy/trunk/doc/funding/B7.0_other_issues.txt Log: replace all occurences of Pypy and pypy with 'PyPy'. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Wed Oct 15 10:52:12 2003 @@ -1,7 +1,7 @@ **Proposal full title:** - The full title of the Proposal is 'Pypy: Researching a highly + The full title of the Proposal is 'PyPy: Researching a highly flexible and modular language platform and implementing it by leveraging the Open Source Python language and community'. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 10:52:12 2003 @@ -182,7 +182,7 @@ WEB-based publication of data within the databases (http://web.mpiib-berlin.mpg.de) will be greatly expanded in the immediate future. The group uses Python extensively for its -bioinformatics analyses, will help in the development of Pypy and will +bioinformatics analyses, will help in the development of PyPy and will act as a test site to evaluate increased performance within its bioinformatics activities. @@ -347,7 +347,7 @@ **Tomasz Meka**: Born 1976 in Poland. Currently studying computer science on the Technical University in Berlin. He is going to write his -diploma thesis on Pypy - about implementing Scheme on top of Pypy. He +diploma thesis on PyPy - about implementing Scheme on top of PyPy. He has a strong background about web programming (python, zope, perl), now is working in dai-lab on the Technical University and is reimplementing the parser and compiler for the agent- controlling @@ -411,7 +411,7 @@ +++++++++++++++++++++++++ is the employer of Armin Rigo, who is the lead architect of the whole project as well as the author of Psyco, the blueprint for how to do -optimisation in Pypy. +optimisation in PyPy. Strakt @@ -446,12 +446,12 @@ group dynamics between the different members. We intend to document and disseminate the management of change throughout the project. Changemaker is also the contact point for Axis Communications, who -will showcase how to integrate Pypy in an embedded device. +will showcase how to integrate PyPy in an embedded device. Logilab +++++++ focuses on constraints and aspect oriented programming and will verify -that Pypy is both extensible with specialised language features and +that PyPy is both extensible with specialised language features and embeddable in small-sized devices with dedicated hardware. With 7 full time employees, Logilab is an SME representative. Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Wed Oct 15 10:52:12 2003 @@ -224,7 +224,7 @@ The management structure will be as follows: -.. image:: projectstructure_pypy.gif +.. image:: projectstructure_PyPy.gif Representatives in the management board: Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Wed Oct 15 10:52:12 2003 @@ -55,13 +55,13 @@ - Interest in "computing for a purpose" rather than "programming for programming sake" - Focus on usability and usefulness -Pypy addresses these concerns in the following ways: +PyPy addresses these concerns in the following ways: Allowing the creation of mobile devices which are easily programmed will increase women's successful experiences with computers, thus increasing their comfort level and likelihood of pursuing education and careers in computers. The ease of - creating programs due to Pypy's simple but powerful language will + creating programs due to PyPy's simple but powerful language will allow women to incorporate programming in pursuit of their interests. The user-friendly, interactive interfaces available will attract more women into programming and designing software. @@ -183,21 +183,21 @@ >end-user such as an educator? Why would it be "better" than CPython? For whatever reason, the complex built_in and the cmath module, implemented - in Python, are part of the early pypy codebase. As I had been spending some + in Python, are part of the early PyPy codebase. As I had been spending some time in the complex realm with PyGeo - a simple version of the complex realm, as these things go - Laura's post gave me the impetus to try to - plugin the pypy implementations. + plugin the PyPy implementations. Only got stuck on the typing issue. My code tests for - instance(object,complex). The pypy complexobject, unadorned, is a class - + instance(object,complex). The PyPy complexobject, unadorned, is a class - and fails the test. But that leads me into a deeper look at some of the - pypy codebase, trying to understand a little bit of how this kind of issue + PyPy codebase, trying to understand a little bit of how this kind of issue are to be dealt with. Not that I got there, yet - but I did seem to have an avenue to explore I would not have with CPython - as someone who doesn't C, and has no intention of trying, seriously, to do so. As someone living within the limits of having Python as my only real - language, I think that pypy should open things up for me considerably. It + language, I think that PyPy should open things up for me considerably. It will make Python, I believe, a more attractive educational language, because it will make someone with a strong foundation in Python - as the language of choice - a more self-sufficient programmer. @@ -207,7 +207,7 @@ fundamental compromise should one not be equipped to go there. Many thousands of folks - using VB and the like - already do involved, highly performing real world applications and make nice livings doing - so, without being equipped to do C. I am thinking that pypy would put + so, without being equipped to do C. I am thinking that PyPy would put Python more squarely in that "space". Is any of this so, or just hope? From hpk at codespeak.net Wed Oct 15 10:54:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 10:54:50 +0200 (MEST) Subject: [pypy-svn] rev 1948 - pypy/trunk/doc/funding Message-ID: <20031015085450.4FEA35A23D@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 10:54:49 2003 New Revision: 1948 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: fixed one replacement of pypy/PyPy in a filename :-) Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Wed Oct 15 10:54:49 2003 @@ -224,7 +224,7 @@ The management structure will be as follows: -.. image:: projectstructure_PyPy.gif +.. image:: projectstructure_pypy.gif Representatives in the management board: From arigo at codespeak.net Wed Oct 15 11:17:22 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 11:17:22 +0200 (MEST) Subject: [pypy-svn] rev 1949 - pypy/trunk/doc/funding Message-ID: <20031015091722.45CF15A23D@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 11:17:21 2003 New Revision: 1949 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Fixed contact for Southampton. I'll try to get a CV from him too. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 11:17:21 2003 @@ -54,7 +54,7 @@ Role: Technical Partner Country: United Kingdom - Contact: Armin Rigo + Contact: Michael Leuschel The University of Southampton (http://www.soton.ac.uk) is one of the leading universities in the UK for high-quality research across a wide From lac at codespeak.net Wed Oct 15 11:25:44 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 11:25:44 +0200 (MEST) Subject: [pypy-svn] rev 1950 - pypy/trunk/doc/funding Message-ID: <20031015092544.ED0FB5A23D@thoth.codespeak.net> Author: lac Date: Wed Oct 15 11:25:44 2003 New Revision: 1950 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: Add ethical. see if you like. Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Wed Oct 15 11:25:44 2003 @@ -1,9 +1,7 @@ Other Issues ============ - Ethical Considerations ---------------------- - A. Proposers are requested to fill in the following table Does your proposed research raise sensitive ethical questions related to: @@ -42,6 +40,38 @@ Confirmation : the proposed research involves none of the issues listed in section B YES. +There are however, other ethical issues which reflect the philosophy +of the Open Source Community. We believe that it is unethical to +withold the source of fundamental tools upon with other people rely. +When a tool that is critical to your business or your daily life +fails, it becomes vital for you to get it fixed. Either you can fix +it yourself, or you can pay somebody else to fix it for you. If that +vital tool is proprietary, then you are immediately stuck in a Market +situation. If the only people who can fix the tool work for high +wages in a country with a high standard of living, then all their +dependent customers who live in poorer conditions are at a +disadvantage, often an unsurmountable one. For lack of the financial +resources to pay for needed fixes, small businesses fail or produce +software that performs poorly in the marketplace, riddled with bugs +that cannot be addressed. This, in turn, prevents those poorer +companies from attaining success. They are marginalised, all +unintentionally, by the normal workings of the Market. They become +a second-tier 'user' of the product, dependent on their software +provider to 'do the right thing', even though 'the right thing' +may vary enormously from region to region. + +Thus, when you deny people the option of being able to 'do it yourself' you +contribute to the forces in society which produce wealth-based social +differentiation and segregation. 'The rich get richer and the poor +get poorer'. A compiler is an extremely fundamental too which one uses +to create any sort of software which one can think of. This is precisely +the sort of tool that must be freely available to the rich as well as +the poor, in all its entirity. The poorer nations will then be in a +non-dependent situation. As they use their imaginations and creativity +and labour to increase their own personal standard of living and that +of the communities where they live, they will have one fewer thing to +worry about -- what will I do if my compiler has a bug? + Gender Issues ------------- From arigo at codespeak.net Wed Oct 15 11:54:37 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 11:54:37 +0200 (MEST) Subject: [pypy-svn] rev 1951 - pypy/trunk/doc/funding Message-ID: <20031015095437.B15005A273@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 11:54:36 2003 New Revision: 1951 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: put the references in alphabetical order. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 11:54:36 2003 @@ -230,64 +230,20 @@ extensions. -References: +---------------------------------------------- -.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native - Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html - -.. file = ivme03.pdf - -.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers - and Modular Interpreters". 22nd ACM Symposium on Principles of Programming - Languages (POPL'95). January 1995. - http://java.sun.com/people/sl/papers/popl95.ps.gz - -.. file = popl95.ps.gz - -.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. - 1998. http://haskell.org/frp/dsl.ps - -.. file = dsl.ps.gz - -.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, - "Knit: Component Composition for Systems Software", - in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. - http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf - -.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems - Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html - -.. file = kelsey97prescheme.pdf - -.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and - Alan Kay. "Back to the future: The story of Squeak, A practical - Smalltalk written in itself." In Proceedings OOPSLA'97, pages - 318--326, November 1997. - ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html - -.. file = OOPSLA.Squeak.htm +**References** .. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. .. file = jit-history.pdf -.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a - Universal Implementation Substrate for Object-Oriented - Languages",OOPSLA 99 workshop on Simplicity, Performance and - Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov - 2, 1999. - http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf - -.. file = oopsla-vm-wkshp.pdf .. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, "Adaptive optimization in the Jalapeno JVM", In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. http://citeseer.nj.nec.com/arnold00adaptive.html -.. [R03] Armin Rigo, http://psyco.sourceforge.net - -.. file = psycoguide.ps.gz .. [APJ03] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. @@ -295,6 +251,13 @@ .. file = ucpy-reverse-engineering-python.pdf + +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. + 1998. http://haskell.org/frp/dsl.ps + +.. file = dsl.ps.gz + + .. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published @@ -304,6 +267,7 @@ .. file = hlzle91optimizing.ps.gz + .. [HU94] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", PLDI '94 and OOPSLA '94 @@ -311,9 +275,60 @@ .. file = reconciling-responsiveness-with-performance.pdf + +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and + Alan Kay. "Back to the future: The story of Squeak, A practical + Smalltalk written in itself." In Proceedings OOPSLA'97, pages + 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +.. file = OOPSLA.Squeak.htm + + +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems + Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html + +.. file = kelsey97prescheme.pdf + + .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf .. file = kiczales97aspectoriented.pdf + + +.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers + and Modular Interpreters". 22nd ACM Symposium on Principles of Programming + Languages (POPL'95). January 1995. + http://java.sun.com/people/sl/papers/popl95.ps.gz + +.. file = popl95.ps.gz + + +.. [R03] Armin Rigo, http://psyco.sourceforge.net + +.. file = psycoguide.ps.gz + + +.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, + "Knit: Component Composition for Systems Software", + in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. + http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf + + +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native + Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html + +.. file = ivme03.pdf + + +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a + Universal Implementation Substrate for Object-Oriented + Languages",OOPSLA 99 workshop on Simplicity, Performance and + Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov + 2, 1999. + http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + +.. file = oopsla-vm-wkshp.pdf From lac at codespeak.net Wed Oct 15 12:00:25 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 12:00:25 +0200 (MEST) Subject: [pypy-svn] rev 1952 - pypy/trunk/doc/funding Message-ID: <20031015100025.6441E5A23D@thoth.codespeak.net> Author: lac Date: Wed Oct 15 12:00:24 2003 New Revision: 1952 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: talk about life-in-a-fishbowl, and how transparency effects how we can deliver Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 12:00:24 2003 @@ -524,6 +524,27 @@ results has already been tested under circumstances that are very similar to what they will be during the project. +Moreover, this project will be run in as transparent a fashion as +possible. Our code will be avaliable every night from our repository. +Our mailing list discussions will be available on a publically +readable archive, and any person is free to join our mailing lists. +Our Internet-Relay-Chat conversations, when important, will be +logged and archived. You can watch us create our documents, our +code, and our deliverables, day to day, as it happens. Meetings +in person will be summarised, and they will be posted. This is +'life in a fish bowl', as transparent a process as you can see. + +This is important because the reason most projects fail to deliver +is because somebody was having a problem, and was too embarassed or +afraid to look bad in front of others to admit the problem until it +was too late to do anything about it. It is secrecy, and not lack of +competance that causes most of the problem. We will avoid this. +Our EU project leader will be able to monitor our progress on a daily +basis and will always be able to know what we are up to, and how +we think it is going. He or she will be free to participate in our +Sprints, and join our mailing lists, talk to us via IRC - whatever +level of involvement is desired. + Resources to be mobilised ------------------------- In any project there are three crucial resources to be mobilised. From arigo at codespeak.net Wed Oct 15 12:18:47 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 12:18:47 +0200 (MEST) Subject: [pypy-svn] rev 1953 - pypy/trunk/doc/funding Message-ID: <20031015101847.41EDF5A23D@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 12:18:46 2003 New Revision: 1953 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: made tables Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Wed Oct 15 12:18:46 2003 @@ -5,40 +5,40 @@ A. Proposers are requested to fill in the following table Does your proposed research raise sensitive ethical questions related to: - - Human beings No. - - Human biological samples No. - - - Personal data (whether identified by name or not) No. - - - Genetic information No. - - - Animals No. ++--------------------------------------------------------------------+------+ +| Human beings | No. | ++--------------------------------------------------------------------+------+ +| Human biological samples | No. | ++--------------------------------------------------------------------+------+ +| Personal data (whether identified by name or not) | No. | ++--------------------------------------------------------------------+------+ +| Genetic information | No. | ++--------------------------------------------------------------------+------+ +| Animals | No. | ++--------------------------------------------------------------------+------+ B. Proposers are requested to confirm that the proposed research does not involve: - Research activity aimed at human cloning for reproductive purposes No. - - Research activity intended to modify the genetic heritage of human - beings which could make such changes heritable. No. - - Research activity intended to create human embryos solely for the - purpose of research or for the purpose of stem cell procurement, - including by means of somatic cell nuclear transfer; No. - - Research involving the use of human embryos or embryonic stem - cells with the exception of banked or isolated human embryonic - stem cells in culture No. - -Confirmation : the proposed research involves none of the issues -listed in section B YES. ++--------------------------------------------------------------------+------+ +| Research activity aimed at human cloning for reproductive purposes| No. | ++--------------------------------------------------------------------+------+ +| Research activity intended to modify the genetic heritage of human| | +| beings which could make such changes heritable. | No. | ++--------------------------------------------------------------------+------+ +| Research activity intended to create human embryos solely for the | | +| purpose of research or for the purpose of stem cell procurement | | +| including by means of somatic cell nuclear transfer; | No. | ++--------------------------------------------------------------------+------+ +| Research involving the use of human embryos or embryonic stem | | +| cells with the exception of banked or isolated human embryonic | | +| stem cells in culture | No. | ++--------------------------------------------------------------------+------+ +|Confirmation : the proposed research involves none of the issues | | +|listed in section B | YES.| ++--------------------------------------------------------------------+------+ There are however, other ethical issues which reflect the philosophy of the Open Source Community. We believe that it is unethical to From lac at codespeak.net Wed Oct 15 12:28:30 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 12:28:30 +0200 (MEST) Subject: [pypy-svn] rev 1954 - pypy/trunk/doc/funding Message-ID: <20031015102830.86C0F5A3FA@thoth.codespeak.net> Author: lac Date: Wed Oct 15 12:28:29 2003 New Revision: 1954 Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt Log: fix typo Modified: pypy/trunk/doc/funding/B7.0_other_issues.txt ============================================================================== --- pypy/trunk/doc/funding/B7.0_other_issues.txt (original) +++ pypy/trunk/doc/funding/B7.0_other_issues.txt Wed Oct 15 12:28:29 2003 @@ -63,7 +63,7 @@ Thus, when you deny people the option of being able to 'do it yourself' you contribute to the forces in society which produce wealth-based social differentiation and segregation. 'The rich get richer and the poor -get poorer'. A compiler is an extremely fundamental too which one uses +get poorer'. A compiler is an extremely fundamental tool which one uses to create any sort of software which one can think of. This is precisely the sort of tool that must be freely available to the rich as well as the poor, in all its entirity. The poorer nations will then be in a From lac at codespeak.net Wed Oct 15 12:35:24 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 12:35:24 +0200 (MEST) Subject: [pypy-svn] rev 1955 - pypy/trunk/doc/funding Message-ID: <20031015103524.62A015A3FA@thoth.codespeak.net> Author: lac Date: Wed Oct 15 12:35:22 2003 New Revision: 1955 Modified: pypy/trunk/doc/funding/B6.6_deliverables_list.txt Log: nuke FIXME Modified: pypy/trunk/doc/funding/B6.6_deliverables_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.6_deliverables_list.txt (original) +++ pypy/trunk/doc/funding/B6.6_deliverables_list.txt Wed Oct 15 12:35:22 2003 @@ -1,5 +1,3 @@ -FIXME_LAURA FIXME_NICO: finish this - .. include:: crossreferences.asc Deliverables List From arigo at codespeak.net Wed Oct 15 12:51:34 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 12:51:34 +0200 (MEST) Subject: [pypy-svn] rev 1956 - pypy/trunk/doc/funding Message-ID: <20031015105134.58BC25A3FF@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 12:51:33 2003 New Revision: 1956 Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Log: expanded reference to the ASAP project (Prolog interpreter in PyPy). Modified: pypy/trunk/doc/funding/B6.0_detailed_implementation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.0_detailed_implementation.txt (original) +++ pypy/trunk/doc/funding/B6.0_detailed_implementation.txt Wed Oct 15 12:51:33 2003 @@ -246,10 +246,23 @@ aspects. These are the extensions enabled by the flexible modularization (bytecode compiler, bytecode interpreter, Object Spaces, and translator) enabled in Phase 1. For example, it would be possible to write an interpreter -for a completely different language (e.g. Prolog) using the same framework, +for a completely different language using the same framework, leveraging the translator and thus obtaining an efficient JIT-enabled -implementation with little effort. (Doing so for the Prolog language has been -adopted as an implementation strategy in a current EU-funded project.) +implementation with little effort. + +This is actually strongly considered as an implementation strategy for the +Prolog language in a current EU-funded project:: + + We could replace with a reasonable amount of effort the core Python + interpreter in PyPy with an experimental Prolog interpreter. This + would both prove the versatility of the PyPy platform and give performance + results possibly far beyond the state of the art. This is a reasonable + assumption because the long history of Prolog is quite focused on + static (compile-time) optimizations. + + --Armin Rigo, for ASAP, Southampton team (Advanced Specialization and + Analysis for Pervasive Computing), EU IST FET Programme Project Number + IST-2001-38059. In the context of the PyPy project, we will not replace the interpreter altogether, but experiment with extensions: From arigo at codespeak.net Wed Oct 15 13:09:51 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 13:09:51 +0200 (MEST) Subject: [pypy-svn] rev 1957 - pypy/trunk/doc/funding Message-ID: <20031015110951.B759F5A2C8@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 13:09:50 2003 New Revision: 1957 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt pypy/trunk/doc/funding/B6.7.wp05_translation.txt Log: explained why we can't promize to pass 100% of the CPython tests Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 13:09:50 2003 @@ -73,11 +73,16 @@ The PyPy project plans to deliver a compliant language implementation passing all unit-tests of the current reference C-implementation that are relevant to the new one. At least 90% of existing unit tests will be directly -applicable. Moreover, we will be able to add techniques such as JIT compilation +applicable.[*]_ Moreover, we will be able to add techniques such as JIT compilation without making the interpreter more complex. Thus we will get speed increases of 2-10 times over the reference C-implementation. We expect algorithmic code to run at least at 50% of the speed of pure, optimized C code. +.. [*] The reference C-implementation contains some tests that depend on implementation + details. The exact line between a language feature and an implementation detail + might at times be hard to draw precisely, but in all cases this only concerns a + minorily of the tests (less than 10%). + Current State of The Art ------------------------------ Modified: pypy/trunk/doc/funding/B6.7.wp05_translation.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp05_translation.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp05_translation.txt Wed Oct 15 13:09:50 2003 @@ -66,6 +66,11 @@ **Milestones and Expected Result** - Complete implementation of Python, conforming to the language - definition and passing 90% of the official Python test suite. + definition and passing all relevant[*]_ tests of the official Python test suite. + +.. [*] CPython contains some tests that depend on implementation + details. The exact line between a language feature and an implementation detail + might at times be hard to draw precisely, but in all cases this only concerns a + minorily of the tests (less than 10%). .. include:: wp-tableend.asc From lac at codespeak.net Wed Oct 15 13:17:06 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 13:17:06 +0200 (MEST) Subject: [pypy-svn] rev 1958 - pypy/trunk/doc/funding Message-ID: <20031015111706.A64275A2C8@thoth.codespeak.net> Author: lac Date: Wed Oct 15 13:17:05 2003 New Revision: 1958 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Make sure the EU knows they are not going to be funding foreigners. there is a way to get Israel and Norway in there as well, but I forget it, and also switzerland .... I asked Johan for the jargon. Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 13:17:05 2003 @@ -91,7 +91,9 @@ the main implementation of the language. The PBF will form a PyPy SIG with **Holger Krekel** as chairman to -handle its involvement in the project. +handle its involvement in the project. Membership in EU funded activities +will be restricted to Members of the EU and the Candidate countries, as +part of the charter of this SIG. **Logilab** @@ -195,7 +197,10 @@ Other countries --------------- -The project does not involve any countries outside the European Union. +While this project is of international interest, and while the PBF is +an international Trade organisation, Membership in the PyPy PBF SIG, +where EU funded activity will take place, is restricted to members of +the European Union and the Candidate countries. Description of the participants ---------------------------------- From pedronis at codespeak.net Wed Oct 15 14:17:33 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 14:17:33 +0200 (MEST) Subject: [pypy-svn] rev 1959 - pypy/trunk/doc/funding Message-ID: <20031015121733.A714B5A2C8@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 14:17:32 2003 New Revision: 1959 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: added more contrast between our approach and Scheme 48, Squeak. Mentioned abstract interp and its pluses. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 14:17:32 2003 @@ -92,13 +92,18 @@ In its basics, the approach of writing a language interpreter in the language itself (a subset thereof) and then producing a running low-level code version trough a translation process has already been -taken, e.g. for the Scheme (Scheme 48) [K97]_ and the -Smalltalk (Squeak) [IKM97]_ languages. Obtaining in this -way an interpreter comparable with current C Python implementation is -within current state of the art, but we plan to exploit -the gained flexibility much further, separating concerns between the -translator, the code and Object Spaces encapsulating the core language -and its semantics and further pluggable modules for both. +taken, e.g. for the Scheme (Scheme 48) [K97]_ and the Smalltalk +(Squeak) [IKM97]_ languages. These approaches are typically based on +translation from high-level source code parsed into ASTs to +C. Obtaining in this way an interpreter comparable with current C +Python implementation is within current state of the art, but we plan +to exploit the gained flexibility much further, separating concerns +between the translator, the code and Object Spaces encapsulating the +core language and its semantics and further pluggable modules for +both. We intend to use abstract interpretation as our analysis tool +making the Object Space operations the semantics units also for +translation, leveraging the coherence of our architecture and gaining +independence from surface issues. Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have From lac at codespeak.net Wed Oct 15 14:23:47 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 14:23:47 +0200 (MEST) Subject: [pypy-svn] rev 1960 - pypy/trunk/doc/funding Message-ID: <20031015122347.F25455A2C8@thoth.codespeak.net> Author: lac Date: Wed Oct 15 14:23:47 2003 New Revision: 1960 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: modified the background. Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Wed Oct 15 14:23:47 2003 @@ -5,46 +5,41 @@ --------------------------- Python is a portable, interpreted, object-oriented Very-High Level -Language (VHLL). Python has tens, perhaps hundreds of thousands of -active developers, which makes it one of the top ten most popular -programming languages in the world. Some other languages, specifically -C, C++, Java, Perl, and Visual Basic, have even larger user bases but -they are either proprietary or rather low-level languages. On the other -hand, the languages which most excite the Computer Science Research -community -- Self, Lisp, Haskell, Limbo, ML, and so on -- are nowhere on -this list, yet they are the targets of most European academic research -and innovation. Thus European economic competitiveness suffers. The -innovative research lives in academia, trapped in languages that are -rarely used for commercial development. - -Of the more popular languages, two, Java and Visual Basic are -proprietary. Sun Microsystems owns Java, and Microsoft owns Visual -Basic. Any company which writes its software in Java or Visual Basic is -at the mercy of these large American companies. This is a real, not -theoretical, threat. In 2002, Microsoft announced that it would no -longer be supporting Visual Basic 6.0 after the year 2005. All Visual -Basic Developers have been told to convert their code to run under -Microsoft's new .NET framework. In 2001 Microsoft immediately stopped -supporting its Visual J++ language, meant to be a direct competitor with -Java, after settling a lawsuit with Sun Microsystems. Microsoft is -making these decisions because they make business sense for Microsoft, -regardless of the effects on businesses who develop software using -Microsoft proprietary software. - -Maybe even more important, proprietary licensing policies make it -expensive and sometimes impossible to adapt these languages to -specialized hardware. +Language (VHLL). Python is believed to have nearly two hundred +thosand active developers, which makes it one of the top ten most +popular programming languages in the world. Some other languages, +specifically C, C++, Java, Perl, and Visual Basic, have even larger +user bases but they are either proprietary or rather low-level +languages. On the other hand, the languages which most excite the +Computer Science Research community -- Self, Lisp, Haskell, Limbo, ML, +and so on -- are nowhere on this list, yet they are the targets of +most European academic research and innovation. Thus European +economic competitiveness suffers. The innovative research lives in +academia, trapped in languages that are rarely used for commercial +development. Instead, commercial companies have turned to offerings +from closed-source American companies. This is risky. +American companies must act in their own business interests, not in +their customers interests, whenever they conflict. Perhaps even more +important, proprietary licensing policies make it expensive and +sometimes impossible to adapt these languages to specialized hardware. +Python is a successful attempt to built a commercially robust language +(not an academic toy) that is an Open Source alternative. European SMEs are moving to Free/Open Source platforms ------------------------------------------------------ -In the face of these threats and flexibility problems, European SMEs are -moving to Free/Open Source languages such as Python. In the year 2002, -a group of SME's who rely on the Python programming language came -together to form the Python Business Forum (www.python-in-business.org), -at EuroPython, the European Python Community Conference -(www.europython.org). +In the face of these threats and flexibility problems, European SMEs +are moving to Free/Open Source languages such as Python. This gives +the Python language developers a larger user-base, with commercial +concerns not seen in academia. In order to properly present this +concerns, and to leverage business acumen and cooporate on shared +goals, a group of SME's who rely on the Python programming language +came together to form the Python Business Forum +(www.python-in-business.org), at EuroPython, the European Python +Community Conference (www.europython.org). The PBF is modelled +after Lantbrukarnas Riksf?rbund - the non-profit Federation of Swedish +Farmers, and is registered as a Non-Profit. Advancing the Python platform ----------------------------- @@ -148,9 +143,9 @@ Meanwhile Holger Krekel had joined the Python community in 2001. For some years he had designed the architecture for platforms and consulted for CEO's of some large banking centers in Europe. While -participating in two 'coding sprints' of the Zope3 web-platform (the +participating in two 'coding Sprints' of the Zope3 web-platform (the to-be successor of the successful Zope web-platform) he realized that -agile 'sprints' in combination with the rapid development language +agile 'Sprints' in combination with the rapid development language Python provide an extremely productive way of communicating about and coding complex projects where traditional, slow-moving methods often fail. @@ -161,13 +156,14 @@ this a lot of fun, but it is a way to transmit knowledge and understanding throughout the group. -Holger Krekel, seeing the opportunity to initiate the PyPy project with -Armin Rigo and Christian Tismer organized the first one-week meeting, -the 'Sprint towards a minimal Python'. Soon many interested developers -joined and intense academical and practical planning ensued. Just a few -weeks later the Sprint took place at 'Trillke-Gut', a castle-like -building in Germany, bringing together some key developers, among them -Michael Hudson, the release manager of version 2.2.1 of Python. +Holger Krekel, seeing the opportunity to initiate the PyPy project +with Armin Rigo and Christian Tismer organized the first one-week +meeting, the 'Sprint towards a minimal Python'. Soon many interested +developers joined and intense academical and practical planning +ensued. The Sprint took place at 'Trillke-Gut', a castle-like +building in Hildesheim, Germany, bringing together some key +developers, among them Michael Hudson, the release manager of version +2.2.1 of Python. Here is his german mail_ (a reply to Christian Tismer) that started this now rapidly evolving project:: @@ -241,7 +237,13 @@ in language and platform architecture who were interested in producing the Python interpreter which they needed. Laura Creighton and Jacob Hall?n from the PBF attended the sprint and began participating in the -project. +project. As Board Memebers of AB Strakt, a Swedish company developing +a novel Workflow application, entirely in Python, they were well aware +that their main product would soon be pushing up against the +limitations of the current version of the language. Their question +was - could this team actually deliver on a flexible, high-performance +version of the language which would not have these limitations? The +approach taken was original. Original solutions need to be tested. The group decided soon to test their proof of concept by developing a working prototype and to test their ability to work together. They @@ -264,7 +266,7 @@ invited Guido van Rossum, the inventor of Python to attend. He not only attended the Belgium sprint but announced a few days later at the EuroPython conference that PyPy had a high priority on his list of -'dreams he hoped would come true' and he enjoyed sprinting with us a +'dreams he hoped would come true' and he enjoyed Sprinting with us a lot. By the end of the third one-week sprint at the University in From pedronis at codespeak.net Wed Oct 15 14:31:40 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 14:31:40 +0200 (MEST) Subject: [pypy-svn] rev 1961 - pypy/trunk/doc/funding Message-ID: <20031015123140.1CA085A2C8@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 14:31:39 2003 New Revision: 1961 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: moved paras around. The AOP reference is the explanation of the indirectness thing, added minimal concrete example of what we really mean. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 14:31:39 2003 @@ -73,16 +73,11 @@ The PyPy project plans to deliver a compliant language implementation passing all unit-tests of the current reference C-implementation that are relevant to the new one. At least 90% of existing unit tests will be directly -applicable.[*]_ Moreover, we will be able to add techniques such as JIT compilation +applicable. Moreover, we will be able to add techniques such as JIT compilation without making the interpreter more complex. Thus we will get speed increases of 2-10 times over the reference C-implementation. We expect algorithmic code to run at least at 50% of the speed of pure, optimized C code. -.. [*] The reference C-implementation contains some tests that depend on implementation - details. The exact line between a language feature and an implementation detail - might at times be hard to draw precisely, but in all cases this only concerns a - minorily of the tests (less than 10%). - Current State of The Art ------------------------------ @@ -179,30 +174,34 @@ (Python). We plan to exploit the flexibility and abstraction gained by using the VHLL and -- most importantly -- the indirectness of translation, in order to weave aspect such as memory management, object layout, -threading model etc. at translation time. +threading model etc. at translation time. + +Many of these aspects are really cross-cutting concerns in the +original Aspect Oriented Programming (AOP) sense. E.g. we expect to +code addition between Python integers in high-level way independent +memory management and of a concrete unboxing implementation. In +general our approach relates to the seminal AOP ideas in [KLM97]_, +although they have not been used on interpreters for large practical +languages. The subset of Python in which we express the core +interpreter and Object Spaces is the component language in the +terminology of the paper, while the translator is a weaver. For +describing aspects and at system definition time we will be able to +use the full dynamism of Python. In general we will explore for each feature and extension how to best implement it by separating concerns between OO-customized Object Spaces, other modules also translated, or the pluggable behavior of the translation itself. -Object Spaces, in contrast to monadic interpreters, will allow customization -with OO techniques, as they encapsulate the object operation semantics, creation -and global state of all objects. As mentioned above, monad transformers can be -used to modularize continuation passing, exceptions and other control flow -aspects. We expect to encapsulate those in an interpreter loop to be also +Object Spaces, in contrast to monadic interpreters, will allow +customization with OO techniques, as they encapsulate the object +operation semantics, creation and global state of all objects. As +mentioned above, monad transformers can be used to modularize +continuation passing, exceptions and other control flow aspects. We +expect to encapsulate those in an interpreter loop to be also translated or to implement them as aspects of the translation process, for example, producing continuation-passing code. -Many of these aspects are really cross-cutting concerns in the -original Aspect Oriented Programming (AOP) sense. In general our approach -relates to the seminal AOP ideas in [KLM97]_, although they have not been -used on interpreters for large practical languages. The subset of -Python in which we express the core interpreter and Object Spaces is -the component language in the terminology of the paper, while the -translator is a weaver. For describing aspects and at system -definition time we will be able to use the full dynamism of Python. - For debugging and comprehensibility we expect the core interpreter and Object Spaces to be runnable as a normal Python program on the reference CPython interpreter. @@ -240,20 +239,64 @@ extensions. ----------------------------------------------- +References: + +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native + Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html + +.. file = ivme03.pdf + +.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers + and Modular Interpreters". 22nd ACM Symposium on Principles of Programming + Languages (POPL'95). January 1995. + http://java.sun.com/people/sl/papers/popl95.ps.gz + +.. file = popl95.ps.gz + +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. + 1998. http://haskell.org/frp/dsl.ps + +.. file = dsl.ps.gz -**References** +.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, + "Knit: Component Composition for Systems Software", + in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. + http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf + +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems + Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html + +.. file = kelsey97prescheme.pdf + +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and + Alan Kay. "Back to the future: The story of Squeak, A practical + Smalltalk written in itself." In Proceedings OOPSLA'97, pages + 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +.. file = OOPSLA.Squeak.htm .. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. .. file = jit-history.pdf +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a + Universal Implementation Substrate for Object-Oriented + Languages",OOPSLA 99 workshop on Simplicity, Performance and + Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov + 2, 1999. + http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + +.. file = oopsla-vm-wkshp.pdf .. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, "Adaptive optimization in the Jalapeno JVM", In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. http://citeseer.nj.nec.com/arnold00adaptive.html +.. [R03] Armin Rigo, http://psyco.sourceforge.net + +.. file = psycoguide.ps.gz .. [APJ03] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. @@ -261,13 +304,6 @@ .. file = ucpy-reverse-engineering-python.pdf - -.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. - 1998. http://haskell.org/frp/dsl.ps - -.. file = dsl.ps.gz - - .. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published @@ -277,7 +313,6 @@ .. file = hlzle91optimizing.ps.gz - .. [HU94] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", PLDI '94 and OOPSLA '94 @@ -285,60 +320,9 @@ .. file = reconciling-responsiveness-with-performance.pdf - -.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and - Alan Kay. "Back to the future: The story of Squeak, A practical - Smalltalk written in itself." In Proceedings OOPSLA'97, pages - 318--326, November 1997. - ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html - -.. file = OOPSLA.Squeak.htm - - -.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems - Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html - -.. file = kelsey97prescheme.pdf - - .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf .. file = kiczales97aspectoriented.pdf - - -.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers - and Modular Interpreters". 22nd ACM Symposium on Principles of Programming - Languages (POPL'95). January 1995. - http://java.sun.com/people/sl/papers/popl95.ps.gz - -.. file = popl95.ps.gz - - -.. [R03] Armin Rigo, http://psyco.sourceforge.net - -.. file = psycoguide.ps.gz - - -.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, - "Knit: Component Composition for Systems Software", - in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. - http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf - - -.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native - Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html - -.. file = ivme03.pdf - - -.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a - Universal Implementation Substrate for Object-Oriented - Languages",OOPSLA 99 workshop on Simplicity, Performance and - Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov - 2, 1999. - http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf - -.. file = oopsla-vm-wkshp.pdf From pedronis at codespeak.net Wed Oct 15 15:07:22 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 15:07:22 +0200 (MEST) Subject: [pypy-svn] rev 1962 - pypy/trunk/doc/funding Message-ID: <20031015130722.04B4B5A1EE@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 15:07:22 2003 New Revision: 1962 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: oops, restored alpha order for refs Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 15:07:22 2003 @@ -238,65 +238,20 @@ way from choices about aspects and predefined or user-supplied extensions. +---------------------------------------------- -References: - -.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native - Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html - -.. file = ivme03.pdf - -.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers - and Modular Interpreters". 22nd ACM Symposium on Principles of Programming - Languages (POPL'95). January 1995. - http://java.sun.com/people/sl/papers/popl95.ps.gz - -.. file = popl95.ps.gz - -.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. - 1998. http://haskell.org/frp/dsl.ps - -.. file = dsl.ps.gz - -.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, - "Knit: Component Composition for Systems Software", - in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. - http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf - -.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems - Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html - -.. file = kelsey97prescheme.pdf - -.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and - Alan Kay. "Back to the future: The story of Squeak, A practical - Smalltalk written in itself." In Proceedings OOPSLA'97, pages - 318--326, November 1997. - ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html - -.. file = OOPSLA.Squeak.htm +**References** .. [A03] John Aycock, "A Brief History of Just-In-Time", ACM Computing Surveys 35, 2 (June 2003), pp. 97-113. .. file = jit-history.pdf -.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a - Universal Implementation Substrate for Object-Oriented - Languages",OOPSLA 99 workshop on Simplicity, Performance and - Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov - 2, 1999. - http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf - -.. file = oopsla-vm-wkshp.pdf .. [AFGHS00] Matthew Arnold, Stephen J. Fink, David Grove, Michael Hind, and Peter F. Sweeney, "Adaptive optimization in the Jalapeno JVM", In Conference on Object-Oriented Prorgramming and Systems, pp. 47-65, 2000. http://citeseer.nj.nec.com/arnold00adaptive.html -.. [R03] Armin Rigo, http://psyco.sourceforge.net - -.. file = psycoguide.ps.gz .. [APJ03] John Aycock and David Pereira and Georges Jodoin, "UCPy: Reverse-Engineering Python", PyCon DC 2003, 9pp. @@ -304,6 +259,13 @@ .. file = ucpy-reverse-engineering-python.pdf + +.. [H98] Paul Hudak. "Modular Domain Specific Languages and Tools". ICSR 98. + 1998. http://haskell.org/frp/dsl.ps + +.. file = dsl.ps.gz + + .. [HCU91] Urs H?lzle, Craig Chambers, and David Ungar, "Optimizing Dynamically-Typed Object-Oriented Languages with Polymorphic Inline Caches", ECOOP'91 Conference Proceedings, Geneva, 1991. Published @@ -313,6 +275,7 @@ .. file = hlzle91optimizing.ps.gz + .. [HU94] Urs H?lzle, David Ungar, "Reconciling Responsiveness with Performance in Pure Object-Oriented Languages", PLDI '94 and OOPSLA '94 @@ -320,9 +283,61 @@ .. file = reconciling-responsiveness-with-performance.pdf + +.. [IKM97] Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and + Alan Kay. "Back to the future: The story of Squeak, A practical + Smalltalk written in itself." In Proceedings OOPSLA'97, pages + 318--326, November 1997. + ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html + +.. file = OOPSLA.Squeak.htm + + +.. [K97] Richard Kelsey, "Pre-Scheme: A Scheme Dialect for Systems + Programming".1997. http://citeseer.nj.nec.com/kelsey97prescheme.html + +.. file = kelsey97prescheme.pdf + + .. [KLM97] Gregor Kiczales and John Lamping and Anurag Menhdhekar and Chris Maeda and Cristina Lopes and Jean-Marc Loingtier and John Irwin, "Aspect-Oriented Programming", ECOOP'97 http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf .. file = kiczales97aspectoriented.pdf + + +.. [LHJ95] Sheng Liang, Paul Hudak and Mark Jones. "Monad Transformers + and Modular Interpreters". 22nd ACM Symposium on Principles of Programming + Languages (POPL'95). January 1995. + http://java.sun.com/people/sl/papers/popl95.ps.gz + +.. file = popl95.ps.gz + + +.. [R03] Armin Rigo, http://psyco.sourceforge.net + +.. file = psycoguide.ps.gz + + +.. [RFSLE00] Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide, + "Knit: Component Composition for Systems Software", + in Proceedings of the Fourth Symposium on Operating Systems Design and Implementation OSDI'2000, 2000. + http://www.cs.utah.edu/flux/papers/knit-osdi00.pdf + + +.. [S03] Gregory Sullivan et. al., "Dynamic Native Optimization of Native + Interpreters". IVME 03. 2003. http://www.ai.mit.edu/~gregs/dynamorio.html + +.. file = ivme03.pdf + + +.. [WAU99] Mario Wolczko, Ole Agesen, David Ungar, "Towards a + Universal Implementation Substrate for Object-Oriented + Languages",OOPSLA 99 workshop on Simplicity, Performance and + Portability in Virtual Machine Design, OOPSLA '99, Denver, CO, Nov + 2, 1999. + http://research.sun.com/research/kanban/oopsla-vm-wkshp.pdf + +.. file = oopsla-vm-wkshp.pdf + From lac at codespeak.net Wed Oct 15 15:09:06 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:09:06 +0200 (MEST) Subject: [pypy-svn] rev 1963 - pypy/trunk/doc/funding Message-ID: <20031015130906.5BA625A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:09:05 2003 New Revision: 1963 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: Fix python --> Python, one typo, and not let it appear to the ignorant that we are tossing European money to americans. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Wed Oct 15 15:09:05 2003 @@ -69,8 +69,8 @@ Informatica, the National Research Institute for Mathematics and Computer Science in the Netherlands, it will strengthen our leadership in the area of innovative language design, and increase world-wide -awareness of this fact. With funding from the EU we can bring some key -python developers to Europe. +awareness of this fact. Funding from the EU will support some key +Python developers who live in Europe. We believe that PyPy presents a **unique opportunity to bring considerable market- and mind share with respect to development tools @@ -101,11 +101,11 @@ dependability of technologies, infrastructures and applications. PyPy will contribute to this goal because it is build on the strength -of the opensource community. Open Source programs are more widely trusted +of the Open Source community. Open Source programs are more widely trusted than proprietary alternatives because they are more transparent, accessible -and customizable. Especially in large opensource projects all parts of -the program are under permanent scrutiny of many interested developer. -Because we are deeply connected to the large python communities we are +and customizable. Especially in large Open Source projects all parts of +the program are under permanent scrutiny of many interested developers. +Because we are deeply connected with the large Python community we are confident that PyPy can take full advantage of this open culture. Moreover, Python is an extremely readable language. Readability was and From arigo at codespeak.net Wed Oct 15 15:11:36 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 15:11:36 +0200 (MEST) Subject: [pypy-svn] rev 1964 - pypy/trunk/doc/funding Message-ID: <20031015131136.357855A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 15:11:35 2003 New Revision: 1964 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: explained why we can't promize to pass 100% of the CPython tests (re-applying patch) Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 15:11:35 2003 @@ -73,11 +73,16 @@ The PyPy project plans to deliver a compliant language implementation passing all unit-tests of the current reference C-implementation that are relevant to the new one. At least 90% of existing unit tests will be directly -applicable. Moreover, we will be able to add techniques such as JIT compilation ++applicable.[*]_ Moreover, we will be able to add techniques such as JIT compilation without making the interpreter more complex. Thus we will get speed increases of 2-10 times over the reference C-implementation. We expect algorithmic code to run at least at 50% of the speed of pure, optimized C code. +.. [*] The reference C-implementation contains some tests that depend on + implementation details. The exact line between a language feature and an + implementation detail might at times be hard to draw precisely, but in all + cases this only concerns a minority of the tests (less than 10%). + Current State of The Art ------------------------------ From lac at codespeak.net Wed Oct 15 15:18:32 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:18:32 +0200 (MEST) Subject: [pypy-svn] rev 1965 - pypy/trunk/doc/funding Message-ID: <20031015131832.12B215A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:18:32 2003 New Revision: 1965 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: python/Python Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Wed Oct 15 15:18:32 2003 @@ -382,7 +382,7 @@ computer language in the world. Only Java, Visual Basic, C, C++, and Perl are believed to have more users. -The Python FAQ, available at the python language home site of +The Python FAQ, available at the Python language home site of python.org says:: 2.1. How many people are using Python? From pedronis at codespeak.net Wed Oct 15 15:20:08 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 15:20:08 +0200 (MEST) Subject: [pypy-svn] rev 1966 - pypy/trunk/doc/funding Message-ID: <20031015132008.569895A1EE@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 15:20:07 2003 New Revision: 1966 Modified: pypy/trunk/doc/funding/B0.1_summary.txt Log: fixed nits from Laura. Modified: pypy/trunk/doc/funding/B0.1_summary.txt ============================================================================== --- pypy/trunk/doc/funding/B0.1_summary.txt (original) +++ pypy/trunk/doc/funding/B0.1_summary.txt Wed Oct 15 15:20:07 2003 @@ -3,7 +3,7 @@ The full title of the Proposal is 'PyPy: Researching a highly flexible and modular language platform and implementing it by - leveraging the Open Source Python language and community'. + leveraging the Open Source Python Language and Community'. **Proposal acronym:** @@ -22,11 +22,11 @@ software systems and services, and embedded software. Our primary Scientific objective is to investigate novel - techniques (AOP code generation and abstract interpretation - -based) for the implementation of practical dynamic languages, - breaking the compromise between flexibility, simplicity and - performance trade-offs and expanding the range (small-to-large) - of directly supportable runtime platforms. + techniques (based on Aspect-Oriented-Programming code generation + and abstract interpretation) for the implementation of practical + dynamic languages, breaking the compromise between flexibility, + simplicity and performance trade-offs and expanding the range + (small-to-large) of directly supportable runtime platforms. Our primary Methological objective is to showcase a novel software engineering process, Sprint Driven Development. This is From alastair at codespeak.net Wed Oct 15 15:21:08 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Wed, 15 Oct 2003 15:21:08 +0200 (MEST) Subject: [pypy-svn] rev 1967 - pypy/trunk/doc/funding Message-ID: <20031015132108.E3CD35A1EE@thoth.codespeak.net> Author: alastair Date: Wed Oct 15 15:21:08 2003 New Revision: 1967 Modified: pypy/trunk/doc/funding/project_gantt.png Log: Updated Gantt chart Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From lac at codespeak.net Wed Oct 15 15:24:03 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:24:03 +0200 (MEST) Subject: [pypy-svn] rev 1968 - pypy/trunk/doc/funding Message-ID: <20031015132403.B2E105A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:24:02 2003 New Revision: 1968 Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt Log: Now I understand what Holger wanted better. Not 'let's pay Jonathan to come and play with us'. Modified: pypy/trunk/doc/funding/B2.relevance_to_IST.txt ============================================================================== --- pypy/trunk/doc/funding/B2.relevance_to_IST.txt (original) +++ pypy/trunk/doc/funding/B2.relevance_to_IST.txt Wed Oct 15 15:24:02 2003 @@ -69,8 +69,10 @@ Informatica, the National Research Institute for Mathematics and Computer Science in the Netherlands, it will strengthen our leadership in the area of innovative language design, and increase world-wide -awareness of this fact. Funding from the EU will support some key -Python developers who live in Europe. +awareness of this fact. We can even do our bit to reverse the +brain-drain, as talented European language designers will no longer +have to move to North America to be involved in language projects +which have more than academic interest. We believe that PyPy presents a **unique opportunity to bring considerable market- and mind share with respect to development tools From lac at codespeak.net Wed Oct 15 15:37:58 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:37:58 +0200 (MEST) Subject: [pypy-svn] rev 1969 - pypy/trunk/doc/funding Message-ID: <20031015133758.0F96A5A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:37:57 2003 New Revision: 1969 Modified: pypy/trunk/doc/funding/B4.resources.txt Log: Change Tomek's indifference to capital letters :-) Modified: pypy/trunk/doc/funding/B4.resources.txt ============================================================================== --- pypy/trunk/doc/funding/B4.resources.txt (original) +++ pypy/trunk/doc/funding/B4.resources.txt Wed Oct 15 15:37:57 2003 @@ -353,10 +353,10 @@ **Tomasz Meka**: Born 1976 in Poland. Currently studying computer science on the Technical University in Berlin. He is going to write his diploma thesis on PyPy - about implementing Scheme on top of PyPy. He -has a strong background about web programming (python, zope, perl), +has a strong background about web programming (Python, Zope, Perl), now is working in dai-lab on the Technical University and is reimplementing the parser and compiler for the agent- controlling -language JADL. He also wrote a book in polish about programming +language JADL. He also wrote a book in Polish about programming the keyboard, joystick and the mouse. He is the founder and programmer of the fantasy portal gildia.com. His passions: programming, traveling, philosophy. From lac at codespeak.net Wed Oct 15 15:40:08 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:40:08 +0200 (MEST) Subject: [pypy-svn] rev 1970 - pypy/trunk/doc/funding Message-ID: <20031015134008.7383B5A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:40:07 2003 New Revision: 1970 Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt Log: python Modified: pypy/trunk/doc/funding/B5.0_manage_bea.txt ============================================================================== --- pypy/trunk/doc/funding/B5.0_manage_bea.txt (original) +++ pypy/trunk/doc/funding/B5.0_manage_bea.txt Wed Oct 15 15:40:07 2003 @@ -131,7 +131,7 @@ co-founder and chairman of the Python Business Forum, an international trade organisation for companies that use Python as their main tool of business. The PBF has approximately 50 member organisations. He is -also the project leader for the Europython 2004 conference, to be held +also the project leader for the EuroPython 2004 conference, to be held in G?teborg, Sweden 9-11 June 2004. **Beatrice D?ring** has experience in large scale education projects @@ -534,7 +534,7 @@ We will present multiple reports and scientific papers on major conferences such as EuroPython (Python's European community conference), FOSDEM (Free and Open Source Developer European Meeting), -OSCON (Open Source Convention), PyCon (python developer +OSCON (Open Source Convention), PyCon (Python developer conference) and to domain specific audiences such as embedded device developers.In a later phase of the project the PEP (Python Enhancement Proposals) procedures may be implemented. This is the standard From alastair at codespeak.net Wed Oct 15 15:46:03 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Wed, 15 Oct 2003 15:46:03 +0200 (MEST) Subject: [pypy-svn] rev 1971 - pypy/trunk/doc/funding Message-ID: <20031015134603.55F895A1EE@thoth.codespeak.net> Author: alastair Date: Wed Oct 15 15:46:02 2003 New Revision: 1971 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: Added para in impact to show we extend the reach of Python Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Wed Oct 15 15:46:02 2003 @@ -477,6 +477,23 @@ century and the latter wish to deploy PyPy in their innovative new business ventures. +Furthermore, an important aspect of the current proposal is that we will +make use of the new opportunities that the Object Spaces give us to extend +the reach of the Python to areas where programmers currently have to resort +to other languages. In particular, we will bring the Stackless version of +Python into the mainstream. This allows Python to handle thousands of +threads inexpensively, making simulation software easy to program. The +makers of computer games have already shown interest in this, and have +funded its early development. The Stackless Python implementation also +supports mobility of running code, allowing it to migrate from one +machine to another. Other programming areas addressed by the project by +building on Object Spaces are Aspect Oriented Programming, Design by +Contract, and Constraint Solving. All these will significantly increase the +attractiveness of Python as a programming language, and we will work with +people in the Python community ls who are interested in simulation, software +engineering, and the semantic web to ensure that they can take full +advantage of the new platform we are offering. + Here is a selection of endorsements of the project from stakeholders, members of the Python Business Forum. From hpk at codespeak.net Wed Oct 15 15:55:13 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 15:55:13 +0200 (MEST) Subject: [pypy-svn] rev 1972 - pypy/trunk/doc/funding Message-ID: <20031015135513.776A25A1EE@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 15:55:12 2003 New Revision: 1972 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: updated the cost figures for the PBF. (did this from staroffice using the external excel-filters, hope that works good enough) Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From lac at codespeak.net Wed Oct 15 15:56:59 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 15:56:59 +0200 (MEST) Subject: [pypy-svn] rev 1973 - pypy/trunk/doc/funding Message-ID: <20031015135659.636695A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 15:56:58 2003 New Revision: 1973 Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Log: Python Modified: pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt ============================================================================== --- pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt (original) +++ pypy/trunk/doc/funding/B6.7.wp09_search_and_logic.txt Wed Oct 15 15:56:58 2003 @@ -40,7 +40,7 @@ **Task 2** -This logic programming enabled python interpreter will then be +This logic programming enabled Python interpreter will then be used to further develop the projects related to Semantic Web applications that are on-going at Logilab and DFKI. From lac at codespeak.net Wed Oct 15 16:01:00 2003 From: lac at codespeak.net (lac at codespeak.net) Date: Wed, 15 Oct 2003 16:01:00 +0200 (MEST) Subject: [pypy-svn] rev 1974 - pypy/trunk/doc/funding Message-ID: <20031015140100.89EB05A1EE@thoth.codespeak.net> Author: lac Date: Wed Oct 15 16:00:59 2003 New Revision: 1974 Modified: pypy/trunk/doc/funding/Z1_background.txt Log: Python Modified: pypy/trunk/doc/funding/Z1_background.txt ============================================================================== --- pypy/trunk/doc/funding/Z1_background.txt (original) +++ pypy/trunk/doc/funding/Z1_background.txt Wed Oct 15 16:00:59 2003 @@ -39,7 +39,7 @@ (www.python-in-business.org), at EuroPython, the European Python Community Conference (www.europython.org). The PBF is modelled after Lantbrukarnas Riksf?rbund - the non-profit Federation of Swedish -Farmers, and is registered as a Non-Profit. +Farmers, and is registered as a Non-Profit in Sweden. Advancing the Python platform ----------------------------- @@ -272,7 +272,7 @@ By the end of the third one-week sprint at the University in Louvain-La-Neuve, the PyPy project had already produced a fully working prototype. There existed a working interpreter and standard -implementation of 90% of the python core types, as well as advanced +implementation of 90% of the Python core types, as well as advanced language features such as nested scopes, generators and metaclasses. Armin Rigo and Guido van Rossum had started work on a type-inference engine as the foundation for the final missing step: generating From pedronis at codespeak.net Wed Oct 15 16:05:04 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 16:05:04 +0200 (MEST) Subject: [pypy-svn] rev 1975 - pypy/trunk/doc/funding Message-ID: <20031015140504.53BF65A1EE@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 16:05:03 2003 New Revision: 1975 Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt Log: added numbers too. Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.5_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Wed Oct 15 16:05:03 2003 @@ -11,35 +11,35 @@ .. |dn| replace:: Deliverable No +===== ==================================================== ===== ==== ==== ==== ==== +|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| ===== ==================================================== ===== ==== ==== ==== ==== ======== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| temp -===== ==================================================== ===== ==== ==== ==== ==== ======== -WP01_ Coordination and Management 24 0 24 DFKI +WP01_ Coordination and Management 1 24 0 24 DFKI ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP02_ Infrastructure and Tools 12 0 24 PBF +WP02_ Infrastructure and Tools 4 12 0 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP03_ Synchronisation with Standard Python 12 0 24 PBF +WP03_ Synchronisation with Standard Python 4 12 0 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP04_ The PyPy Core 45 0 9 PBF +WP04_ The PyPy Core 4 45 0 9 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP05_ The PyPy Translation 45 0 9 USH +WP05_ The PyPy Translation 2 45 0 9 USH ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP06_ Core Optimisations 24 9 24 USH +WP06_ Core Optimisations 2 24 9 24 USH ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP07_ Translator Optimisations 31 9 18 PBF +WP07_ Translator Optimisations 4 31 9 18 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP08_ Dynamic Optimisations 36 9 18 PBF +WP08_ Dynamic Optimisations 4 36 9 18 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP09_ Extend Language with Search and Logic 24 9 24 DFKI +WP09_ Extend Language with Search and Logic 1 24 9 24 DFKI ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP10_ Extend Language with Aspects and Contracts 15 9 24 Logilab +WP10_ Extend Language with Aspects and Contracts 6 15 9 24 Logilab ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP11_ Embed in Specialized Hardware 10 9 24 ChangeMaker +WP11_ Embed in Specialized Hardware 7 10 9 24 ChangeMaker ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP12_ Implement Security, Distribution and Persistence 24 18 24 PBF +WP12_ Implement Security, Distribution and Persistence 4 24 18 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP13_ Integration and Configuration 18 18 24 PBF +WP13_ Integration and Configuration 4 18 18 24 PBF ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- -WP14_ Project Documentation and Dissemination 24 0 24 Strakt +WP14_ Project Documentation and Dissemination 5 24 0 24 Strakt ===== ==================================================== ===== ==== ==== ==== ==== ======== From arigo at codespeak.net Wed Oct 15 16:09:05 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 16:09:05 +0200 (MEST) Subject: [pypy-svn] rev 1976 - pypy/trunk/doc/funding Message-ID: <20031015140905.B02C55A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 16:09:04 2003 New Revision: 1976 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: Rewritten and reordered, please review Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 16:09:04 2003 @@ -89,37 +89,43 @@ Interpreters Modularity ++++++++++++++++++++++++ -In its basics, the approach of writing a language interpreter in the -language itself (a subset thereof) and then producing a running -low-level code version trough a translation process has already been -taken, e.g. for the Scheme (Scheme 48) [K97]_ and the Smalltalk -(Squeak) [IKM97]_ languages. These approaches are typically based on -translation from high-level source code parsed into ASTs to -C. Obtaining in this way an interpreter comparable with current C -Python implementation is within current state of the art, but we plan -to exploit the gained flexibility much further, separating concerns -between the translator, the code and Object Spaces encapsulating the -core language and its semantics and further pluggable modules for -both. We intend to use abstract interpretation as our analysis tool -making the Object Space operations the semantics units also for -translation, leveraging the coherence of our architecture and gaining -independence from surface issues. - Haskell monadic modular interpreters [LHJ95]_ [H98]_ are a researched attempt at achieving modularity for interpreters. They have -not been tried on something as large as Python but in the context of DSLs, -however, as the approach is hard +not been tried on something as large as Python but in the context of +Domain-Specific Languages (DSLs). However, the approach is hard to relate to for programmers accustomed to more conventional Object-Oriented (OO) programming and requires sophisticated partial evaluation to remove the -monadic overhead. Monad transformers can also be used to modularize -continuation passing, exceptions and other control flow aspects. +monadic overhead. On the positive side, monad transformers are powerful enough +to modularize continuation passing, exceptions and other control flow aspects. Some of the kind of modularity we are interested in for interpreters - subsetting, choice among implementation of basics aspects (memory -management,...), feature selection - has some similarity with recent research on OS -modularity and software composition, e.g the Flux Group OSKit project, -see [RFSLE00]_ about their composition tool Knit. - +management,...), feature selection - has some similarity with recent research +on OS modularity and software composition, e.g. the Flux Group OSKit project +and their composition tool Knit [RFSLE00]_. + +In its basics, the approach of writing a language interpreter in the +language itself (a subset thereof) and then producing a running +low-level code version through a translation process has already been +taken e.g. for the Scheme (Scheme 48) [K97]_ and the Smalltalk +(Squeak) [IKM97]_ languages. These approaches are typically based on +translation from high-level source code (or parsed source code) into +C. Obtaining in this way an interpreter comparable with the current C +Python implementation would be within current state of the art; but note +that our approach differs in three respects (as explained in more +details in the next section): what we will translate is a dynamically loaded +and initialized program state instead of the static source code; the translator +works by abstract interpretation (also known as symbolic interpretation), +which makes it independent from the actual source or bytecode; and we will +put the key modularity and flexibility concerns into the translator. + +We plan to exploit the gained flexibility of the translator much further. +It will enable separation on concerns between the translator, the +core interpreter, and the Object Spaces, in the spirit of Aspect +Oriented Programming (AOP) as developed in [KLM97]_. AOP separate cross-cutting +aspects into separate components. This approach has however not been used on +interpreters for large practical languages. + JITs and Dynamic Optimisation Complexity ++++++++++++++++++++++++++++++++++++++++++ @@ -172,56 +178,60 @@ Our architecture is based on Object Spaces and translation. The interpreter's main dispatch loop handles control flow and supporting data structures (frame stack, bytecode objects...); each individual -operation on objects is dispatched to the object space. - -Unlike the related work previously cited, we don't expect to encode a -fixed single interpreter in all its details in a subset of our VHLL -(Python). We plan to exploit the flexibility and abstraction gained by -using the VHLL and -- most importantly -- the indirectness of translation, -in order to weave aspect such as memory management, object layout, -threading model etc. at translation time. - -Many of these aspects are really cross-cutting concerns in the -original Aspect Oriented Programming (AOP) sense. E.g. we expect to -code addition between Python integers in high-level way independent -memory management and of a concrete unboxing implementation. In -general our approach relates to the seminal AOP ideas in [KLM97]_, -although they have not been used on interpreters for large practical -languages. The subset of Python in which we express the core -interpreter and Object Spaces is the component language in the -terminology of the paper, while the translator is a weaver. For -describing aspects and at system definition time we will be able to -use the full dynamism of Python. - -In general we will explore for each feature and extension how to best -implement it by separating concerns between OO-customized Object -Spaces, other modules also translated, or the pluggable behavior of -the translation itself. +operation on objects is dispatched to the Object Space. Object Spaces, in contrast to monadic interpreters, will allow customization with OO techniques, as they encapsulate the object operation semantics, creation and global state of all objects. As mentioned above, monad transformers can be used to modularize continuation passing, exceptions and other control flow aspects. We -expect to encapsulate those in an interpreter loop to be also -translated or to implement them as aspects of the translation process, -for example, producing continuation-passing code. - -For debugging and comprehensibility we expect the core interpreter and -Object Spaces to be runnable as a normal Python program on the -reference CPython interpreter. +expect to encapsulate each of those either in Object Spaces, in the interpreter +loop, or as aspects of the translation process (which would then generate +for example continuation-passing code). + +This latter point is in contrast to the related work previously cited: +we don't expect to encode a fixed single interpreter in all its details in a +subset of our VHLL (Python). We plan to exploit the flexibility and abstraction +gained by using the VHLL and -- most importantly -- the indirectness of +translation in order to "weave" aspects such as continuation passing, memory +management, object layout, threading model etc. at translation time. + +Many of these aspects are really cross-cutting concerns in the +original Aspect Oriented Programming (AOP) sense. E.g. we expect to +code addition between Python integers in a high-level way independent +of memory management and of boxing issues. In +general our approach relates to the seminal AOP ideas of [KLM97]_: +the subset of Python in which we express the core +interpreter and Object Spaces is the *component language* in the +terminology of the paper, while the translator is a *weaver* written +with the full dynamism of Python. + +In summary, we will explore for each feature and extension how to best +implement it by separation of concerns: either in OO-customized Object +Spaces, or in the core or in modules to be translated, or as a pluggable +behavior of the translation itself. The front-end of the translator itself will be innovative in that it is based on abstract (symbolic) interpretation. The translation of code from our Python subset (in particular the source of PyPy itself) will thus be driven by PyPy's own Python interpreter, made symbolic by -plugging a custom Object Space. Weaving custom aspects will be done -mainly as intermediate stages, and by customizing the back-end to -generate low-level code in various styles as needed. For example, it can -be in continuation passing style (CPS), or it can target altogether -different runtime environments like Java -- the latter is a cheap way to -regenerate and subsequently maintain a replacement for Jython, the -Python interpreter written in Java. +plugging a custom Object Space. This turns the Object Space operations +into the semantics units of translation as well, leveraging the coherence +of our architecture and gaining independence from surface issues including +the details of the bytecode itself. +Moreover, we can use the full dynamism of Python at system definition time, +i.e. when PyPy loads, until we reach a "stable-and-ready" state that the +translator can freeze into a snapshot containing exactly the features and +modules that we need. In previous work, the translator only operated on the +static source code. + +During the translation process, weaving custom aspects will be done mainly +as intermediate stages, while the customizable back-end generates low-level +code in various styles as needed. For example, it can be in continuation +passing style (CPS), or it can target altogether +different runtime environments like Java -- providing a cheap way to +regenerate a replacement for Jython, the Python interpreter written in Java, +without the burden of having to maintain it synchronized with CPython. Another key innovative aspect of our project is to generate the JIT compiler instead of writing it manually. Indeed, although Psyco was From tismer at codespeak.net Wed Oct 15 16:20:41 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 16:20:41 +0200 (MEST) Subject: [pypy-svn] rev 1977 - pypy/trunk/doc/funding Message-ID: <20031015142041.9118A5A1EE@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 16:20:40 2003 New Revision: 1977 Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt Log: corrected ReST Modified: pypy/trunk/doc/funding/B6.5_workpackage_list.txt ============================================================================== --- pypy/trunk/doc/funding/B6.5_workpackage_list.txt (original) +++ pypy/trunk/doc/funding/B6.5_workpackage_list.txt Wed Oct 15 16:20:40 2003 @@ -11,8 +11,8 @@ .. |dn| replace:: Deliverable No -===== ==================================================== ===== ==== ==== ==== ==== -|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| +===== ==================================================== ===== ==== ==== ==== ==== ======== +|wpn| Workpackage title |lcn| |pm| |sm| |em| |dn| delete ===== ==================================================== ===== ==== ==== ==== ==== ======== WP01_ Coordination and Management 1 24 0 24 DFKI ----- ---------------------------------------------------- ----- ---- ---- ---- ---- -------- From hpk at codespeak.net Wed Oct 15 16:23:57 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 16:23:57 +0200 (MEST) Subject: [pypy-svn] rev 1978 - pypy/trunk/doc/funding Message-ID: <20031015142357.EF4205A1EE@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 16:23:57 2003 New Revision: 1978 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: streamlined the last paragraph in B1.0_objectives.txt Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 16:23:57 2003 @@ -248,10 +248,9 @@ of (or in addition to) the normal C instructions that would be the direct translation. -Finally we expect to develop automatic tools that should allow -language users to compose and construct interpreters in a streamlined -way from choices about aspects and predefined or user-supplied -extensions. +Finally we expect to develop automatic build tools that allow +choices about aspects, predefined or user-supplied modifications +and extensions to be made from the language user. ---------------------------------------------- From arigo at codespeak.net Wed Oct 15 16:33:25 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 16:33:25 +0200 (MEST) Subject: [pypy-svn] rev 1979 - pypy/trunk/doc/funding Message-ID: <20031015143325.E11BB5A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 16:33:25 2003 New Revision: 1979 Modified: pypy/trunk/doc/funding/project_gantt.png Log: Less wide Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From pedronis at codespeak.net Wed Oct 15 16:34:08 2003 From: pedronis at codespeak.net (pedronis at codespeak.net) Date: Wed, 15 Oct 2003 16:34:08 +0200 (MEST) Subject: [pypy-svn] rev 1980 - pypy/trunk/doc/funding Message-ID: <20031015143408.AED055A1EE@thoth.codespeak.net> Author: pedronis Date: Wed Oct 15 16:34:07 2003 New Revision: 1980 Modified: pypy/trunk/doc/funding/B1.0_objectives.txt Log: build of what. Modified: pypy/trunk/doc/funding/B1.0_objectives.txt ============================================================================== --- pypy/trunk/doc/funding/B1.0_objectives.txt (original) +++ pypy/trunk/doc/funding/B1.0_objectives.txt Wed Oct 15 16:34:07 2003 @@ -248,7 +248,7 @@ of (or in addition to) the normal C instructions that would be the direct translation. -Finally we expect to develop automatic build tools that allow +Finally we expect to develop automatic interpreter build tools that allow choices about aspects, predefined or user-supplied modifications and extensions to be made from the language user. From jacob at codespeak.net Wed Oct 15 16:37:30 2003 From: jacob at codespeak.net (jacob at codespeak.net) Date: Wed, 15 Oct 2003 16:37:30 +0200 (MEST) Subject: [pypy-svn] rev 1981 - pypy/trunk/doc/funding Message-ID: <20031015143730.9E5265A1EE@thoth.codespeak.net> Author: jacob Date: Wed Oct 15 16:37:29 2003 New Revision: 1981 Modified: pypy/trunk/doc/funding/A3_draft.xls Log: Reviewed figures. Modified: pypy/trunk/doc/funding/A3_draft.xls ============================================================================== Binary files. No diff available. From arigo at codespeak.net Wed Oct 15 16:40:42 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 16:40:42 +0200 (MEST) Subject: [pypy-svn] rev 1982 - pypy/trunk/doc/funding Message-ID: <20031015144042.662365A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 16:40:41 2003 New Revision: 1982 Modified: pypy/trunk/doc/funding/project_gantt.png Log: milestones Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From arigo at codespeak.net Wed Oct 15 16:41:24 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 16:41:24 +0200 (MEST) Subject: [pypy-svn] rev 1983 - pypy/trunk/doc/funding Message-ID: <20031015144124.C96D05A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 16:41:23 2003 New Revision: 1983 Modified: pypy/trunk/doc/funding/project_gantt.png Log: oops Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From hpk at codespeak.net Wed Oct 15 16:44:09 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 16:44:09 +0200 (MEST) Subject: [pypy-svn] rev 1984 - pypy/branch/funding-16_42 Message-ID: <20031015144409.B04685A1EE@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 16:44:09 2003 New Revision: 1984 Added: pypy/branch/funding-16_42/ - copied from rev 1983, pypy/trunk/doc/funding/ Log: made snapshot of funding 16_44 From hpk at codespeak.net Wed Oct 15 16:46:16 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Wed, 15 Oct 2003 16:46:16 +0200 (MEST) Subject: [pypy-svn] rev 1985 - in pypy: branch/funding-16_42 tag/funding-16_42 Message-ID: <20031015144616.D18395A555@thoth.codespeak.net> Author: hpk Date: Wed Oct 15 16:46:16 2003 New Revision: 1985 Added: pypy/tag/funding-16_42/ - copied from rev 1984, pypy/branch/funding-16_42/ Removed: pypy/branch/funding-16_42/ Log: moved the funding-snapshot to the tag dir where it belongs From arigo at codespeak.net Wed Oct 15 16:52:00 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 16:52:00 +0200 (MEST) Subject: [pypy-svn] rev 1986 - pypy/trunk/doc/funding Message-ID: <20031015145200.913365A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 16:51:59 2003 New Revision: 1986 Modified: pypy/trunk/doc/funding/project_gantt.png Log: I guess you cannot tell the 3 differences Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 17:09:43 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 17:09:43 +0200 (MEST) Subject: [pypy-svn] rev 1987 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015150943.2C82B5A1EE@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 17:09:40 2003 New Revision: 1987 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: Made the pre-final PDF. The document is no longer generated now. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From arigo at codespeak.net Wed Oct 15 17:10:45 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 17:10:45 +0200 (MEST) Subject: [pypy-svn] rev 1988 - pypy/trunk/doc/funding Message-ID: <20031015151045.AE9BD5A1EE@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 17:10:44 2003 New Revision: 1988 Modified: pypy/trunk/doc/funding/project_gantt.png Log: renamed "hacker" into "r&d" :-) Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 17:14:24 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 17:14:24 +0200 (MEST) Subject: [pypy-svn] rev 1989 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015151424.0B7B15A3FF@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 17:14:23 2003 New Revision: 1989 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: new gantt in PDF Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From arigo at codespeak.net Wed Oct 15 17:17:05 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Wed, 15 Oct 2003 17:17:05 +0200 (MEST) Subject: [pypy-svn] rev 1990 - pypy/trunk/doc/funding Message-ID: <20031015151705.CE2725A3FF@thoth.codespeak.net> Author: arigo Date: Wed Oct 15 17:17:04 2003 New Revision: 1990 Modified: pypy/trunk/doc/funding/project_gantt.png Log: argh argh argh Modified: pypy/trunk/doc/funding/project_gantt.png ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 17:19:05 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 17:19:05 +0200 (MEST) Subject: [pypy-svn] rev 1991 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015151905.B37A05A3FF@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 17:18:58 2003 New Revision: 1991 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: modified gantt again. New PDF Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 17:21:45 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 17:21:45 +0200 (MEST) Subject: [pypy-svn] rev 1992 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015152145.B93645A3FF@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 17:21:44 2003 New Revision: 1992 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: formatting. New PDF Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From alastair at codespeak.net Wed Oct 15 17:25:02 2003 From: alastair at codespeak.net (alastair at codespeak.net) Date: Wed, 15 Oct 2003 17:25:02 +0200 (MEST) Subject: [pypy-svn] rev 1993 - pypy/trunk/doc/funding Message-ID: <20031015152502.CFEDB5A3FF@thoth.codespeak.net> Author: alastair Date: Wed Oct 15 17:25:01 2003 New Revision: 1993 Modified: pypy/trunk/doc/funding/B3.impact.txt Log: Fixed typo Modified: pypy/trunk/doc/funding/B3.impact.txt ============================================================================== --- pypy/trunk/doc/funding/B3.impact.txt (original) +++ pypy/trunk/doc/funding/B3.impact.txt Wed Oct 15 17:25:01 2003 @@ -477,22 +477,23 @@ century and the latter wish to deploy PyPy in their innovative new business ventures. -Furthermore, an important aspect of the current proposal is that we will -make use of the new opportunities that the Object Spaces give us to extend -the reach of the Python to areas where programmers currently have to resort -to other languages. In particular, we will bring the Stackless version of -Python into the mainstream. This allows Python to handle thousands of -threads inexpensively, making simulation software easy to program. The -makers of computer games have already shown interest in this, and have -funded its early development. The Stackless Python implementation also -supports mobility of running code, allowing it to migrate from one -machine to another. Other programming areas addressed by the project by -building on Object Spaces are Aspect Oriented Programming, Design by -Contract, and Constraint Solving. All these will significantly increase the -attractiveness of Python as a programming language, and we will work with -people in the Python community ls who are interested in simulation, software -engineering, and the semantic web to ensure that they can take full -advantage of the new platform we are offering. +Furthermore, an important aspect of the current proposal is that we +will make use of the new opportunities that the Object Spaces give us +to extend the reach of the Python to areas where programmers currently +have to resort to other languages. In particular, we will bring the +Stackless version of Python into the mainstream. This allows Python to +handle thousands of threads inexpensively, making simulation software +easy to program. The makers of computer games have already shown +interest in this, and have funded its early development. The Stackless +Python implementation also supports mobility of running code, allowing +it to migrate from one machine to another. Other programming areas +addressed by the project by building on Object Spaces are Aspect +Oriented Programming, Design by Contract, and Constraint Solving. All +these will significantly increase the attractiveness of Python as a +programming language, and we will work with people in the Python +community who are interested in simulation, software engineering, and +the semantic web to ensure that they can take full advantage of the +new platform we are offering. Here is a selection of endorsements of the project from stakeholders, members of the Python Business Forum. From tismer at codespeak.net Wed Oct 15 17:28:35 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 17:28:35 +0200 (MEST) Subject: [pypy-svn] rev 1994 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015152835.A6DFC5A3FF@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 17:28:33 2003 New Revision: 1994 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: changed version in footer to 1.0 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 18:47:47 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 18:47:47 +0200 (MEST) Subject: [pypy-svn] rev 1995 - in pypy/trunk/doc/funding: Z1_background makedoc proposal Message-ID: <20031015164747.C20995A273@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 18:47:45 2003 New Revision: 1995 Modified: pypy/trunk/doc/funding/Z1_background/Z1_background.sxw pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/Z1_background.pdf pypy/trunk/doc/funding/proposal/part_b.pdf Log: cosmetic and small content changes. New PDFs Modified: pypy/trunk/doc/funding/Z1_background/Z1_background.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/Z1_background.pdf ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 18:57:46 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 18:57:46 +0200 (MEST) Subject: [pypy-svn] rev 1996 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015165746.C4E865A273@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 18:57:43 2003 New Revision: 1996 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: more repairs Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From tismer at codespeak.net Wed Oct 15 19:17:51 2003 From: tismer at codespeak.net (tismer at codespeak.net) Date: Wed, 15 Oct 2003 19:17:51 +0200 (MEST) Subject: [pypy-svn] rev 1997 - in pypy/trunk/doc/funding: makedoc proposal Message-ID: <20031015171751.B811B5A273@thoth.codespeak.net> Author: tismer Date: Wed Oct 15 19:17:47 2003 New Revision: 1997 Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw pypy/trunk/doc/funding/proposal/part_b.pdf Log: most probably the final final PDF Modified: pypy/trunk/doc/funding/makedoc/part_b.sxw ============================================================================== Binary files. No diff available. Modified: pypy/trunk/doc/funding/proposal/part_b.pdf ============================================================================== Binary files. No diff available. From arigo at codespeak.net Thu Oct 16 17:18:31 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Thu, 16 Oct 2003 17:18:31 +0200 (MEST) Subject: [pypy-svn] rev 1999 - pypy/trunk/src/pypy/translator/test Message-ID: <20031016151831.DB7865A1EE@thoth.codespeak.net> Author: arigo Date: Thu Oct 16 17:18:31 2003 New Revision: 1999 Added: pypy/trunk/src/pypy/translator/test/stdoutcapture.py (contents, props changed) Modified: pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Log: output from the C compiler is now hidden, unless there is a compilation error. Modified: pypy/trunk/src/pypy/translator/test/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Thu Oct 16 17:18:31 2003 @@ -4,6 +4,7 @@ from vpath.local import Path import os, sys +import stdoutcapture debug = 0 @@ -37,16 +38,25 @@ try: modname = pyxfile.purebasename() if debug: print "modname", modname - setup( - name = "testmodules", - ext_modules=[ - Extension(modname, [str(pyxfile)]) - ], - cmdclass = {'build_ext': build_ext}, - script_name = 'setup.py', - script_args = ['-q', 'build_ext', '--inplace'] - #script_args = ['build_ext', '--inplace'] - ) + c = stdoutcapture.Capture(mixed_out_err = True) + try: + try: + setup( + name = "testmodules", + ext_modules=[ + Extension(modname, [str(pyxfile)]) + ], + cmdclass = {'build_ext': build_ext}, + script_name = 'setup.py', + script_args = ['-q', 'build_ext', '--inplace'] + #script_args = ['build_ext', '--inplace'] + ) + finally: + foutput, foutput = c.done() + except: + print foutput.read() + raise + # XXX do we need to do some check on fout/ferr? # XXX not a nice way to import a module if debug: print "inserting path to sys.path", dirpath sys.path.insert(0, '.') Added: pypy/trunk/src/pypy/translator/test/stdoutcapture.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/stdoutcapture.py Thu Oct 16 17:18:31 2003 @@ -0,0 +1,74 @@ +""" +A quick hack to capture the stdout/stderr output of Unix processes. +Does not work on Windows. +""" + +import os, sys + + +class Capture: + + def __init__(self, mixed_out_err = False): + "Start capture of the Unix-level stdout and stderr." + if (not hasattr(os, 'tmpfile') or + not hasattr(os, 'dup') or + not hasattr(os, 'dup2') or + not hasattr(os, 'fdopen')): + self.dummy = 1 + else: + self.dummy = 0 + # make new stdout/stderr files if needed + self.localoutfd = os.dup(1) + self.localerrfd = os.dup(2) + if sys.stdout.fileno() == 1: + self.saved_stdout = sys.stdout + sys.stdout = os.fdopen(self.localoutfd, 'w', 1) + else: + self.saved_stdout = None + if sys.stderr.fileno() == 2: + self.saved_stderr = sys.stderr + sys.stderr = os.fdopen(self.localerrfd, 'w', 0) + else: + self.saved_stderr = None + self.tmpout = os.tmpfile() + if mixed_out_err: + self.tmperr = self.tmpout + else: + self.tmperr = os.tmpfile() + os.dup2(self.tmpout.fileno(), 1) + os.dup2(self.tmperr.fileno(), 2) + + def done(self): + "End capture and return the captured text (stdoutfile, stderrfile)." + if self.dummy: + import cStringIO + return cStringIO.StringIO(), cStringIO.StringIO() + else: + os.dup2(self.localoutfd, 1) + os.dup2(self.localerrfd, 2) + if self.saved_stdout is not None: + f = sys.stdout + sys.stdout = self.saved_stdout + f.close() + else: + os.close(self.localoutfd) + if self.saved_stderr is not None: + f = sys.stderr + sys.stderr = self.saved_stderr + f.close() + else: + os.close(self.localerrfd) + self.tmpout.seek(0) + self.tmperr.seek(0) + return self.tmpout, self.tmperr + + +if __name__ == '__main__': + # test + c = Capture() + try: + os.system('echo hello') + finally: + fout, ferr = c.done() + print 'Output:', `fout.read()` + print 'Error:', `ferr.read()` From sanxiyn at codespeak.net Thu Oct 16 17:35:23 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 16 Oct 2003 17:35:23 +0200 (MEST) Subject: [pypy-svn] rev 2000 - pypy/trunk/src/pypy/translator/test Message-ID: <20031016153523.01D715A1EE@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 16 17:35:23 2003 New Revision: 2000 Modified: pypy/trunk/src/pypy/translator/test/make_dot.py pypy/trunk/src/pypy/translator/test/stdoutcapture.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: make_dot: turned off "wrote ..." message stdoutcapture: it works on Windows! test_pyrextrans: s/1/True/ Modified: pypy/trunk/src/pypy/translator/test/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/test/make_dot.py Thu Oct 16 17:35:23 2003 @@ -198,7 +198,7 @@ psdest = dest.newext(target) out = exec_cmd('dot -T%s %s' % (target, str(dest))) psdest.write(out) - print "wrote", psdest + #print "wrote", psdest return psdest if __name__ == '__main__': Modified: pypy/trunk/src/pypy/translator/test/stdoutcapture.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/stdoutcapture.py (original) +++ pypy/trunk/src/pypy/translator/test/stdoutcapture.py Thu Oct 16 17:35:23 2003 @@ -1,6 +1,5 @@ """ -A quick hack to capture the stdout/stderr output of Unix processes. -Does not work on Windows. +A quick hack to capture stdout/stderr. """ import os, sys Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Thu Oct 16 17:35:23 2003 @@ -5,7 +5,7 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = 1 +make_dot = True if make_dot: from pypy.translator.test.make_dot import make_dot From sanxiyn at codespeak.net Thu Oct 16 19:39:47 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 16 Oct 2003 19:39:47 +0200 (MEST) Subject: [pypy-svn] rev 2001 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031016173947.2C7775A1EE@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 16 19:39:44 2003 New Revision: 2001 Added: pypy/trunk/src/pypy/translator/peepfgt.py Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/translator.py Log: gencl op_default emits better debugging message op_getitem as op_binary with aref op_alloc_and_set, op_setitem, with obvious mappings test_cltrans two_plus_two, is four -- using array annotation simplify_calls wrongly turned block.operations to list now it is converted back to tuple simplify_hooks mechanism peepfgt peephole flowgraph transformation registers simplify_hooks Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Thu Oct 16 19:39:44 2003 @@ -61,10 +61,14 @@ op = SpaceOperation('simple_call', args_w, op.result) # XXX check that w_kwargs is empty newops.append(op) - block.operations = newops + block.operations = tuple(newops) + + simplify_hooks = [] def simplify(self): self.simplify_calls() + for hook in self.simplify_hooks: + hook(self) #__________________________________________________ Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Thu Oct 16 19:39:44 2003 @@ -2,6 +2,9 @@ from pypy.translator.flowmodel import * from pypy.translator.annotation import Annotator +from pypy.translator.peepfgt import register +register() + # For 2.2 -- sanxiyn if not isinstance(bool, type): class bool(int): @@ -11,6 +14,7 @@ def __init__(self, gen, op): self.gen = gen self.str = gen.str + self.op = op self.opname = op.opname self.args = op.args self.result = op.result @@ -21,12 +25,16 @@ default = self.op_default meth = getattr(self, "op_" + self.opname, default) meth() + def op_default(self): + print ";", self.op + print "; Op", self.opname, "is missing" binary_ops = { "add": "+", "inplace_add": "+", # weird, but it works "mod": "mod", "lt": "<", "eq": "=", + "getitem": "aref", } def op_binary(self, op): s = self.str @@ -39,8 +47,15 @@ print "(setq", s(result), "(not" self.gen.emit_truth_test(arg1) print "))" - def op_default(self): - print "; Op", self.opname, "is missing" + def op_alloc_and_set(self): + s = self.str + result, (size, init) = self.result, self.args + print "(setq", s(result), "(make-array", s(size) + print ":initial-element", s(init), "))" + def op_setitem(self): + s = self.str + (array, index, element) = self.args + print "(setf (aref", s(array), s(index), ")", s(element), ")" class GenCL: def __init__(self, fun): Added: pypy/trunk/src/pypy/translator/peepfgt.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/peepfgt.py Thu Oct 16 19:39:44 2003 @@ -0,0 +1,28 @@ +"""Peephole Flow Graph Transformation +""" + +import autopath +from pypy.translator.flowmodel import * +from pypy.translator.annotation import Annotator + +def transform_allocate(self): + for block, ann in self.annotated.iteritems(): + operations = block.operations + n_op = len(operations) + for i in range(0, n_op-1): + op1 = operations[i] + op2 = operations[i+1] + if (op1.opname == 'newlist' and + len(op1.args) == 1 and + op2.opname == 'mul' and + op1.result is op2.args[0] and + ann.get_type(op2.args[1]) is int): + new_op = SpaceOperation('alloc_and_set', + (op2.args[1], op1.args[0]), + op2.result) + block.operations = (operations[:i] + + (new_op,) + + operations[i+2:]) + +def register(): + Annotator.simplify_hooks.append(transform_allocate) Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Thu Oct 16 19:39:44 2003 @@ -65,5 +65,16 @@ self.assertEquals(cl_bool(42), True) self.assertEquals(cl_bool(True), True) + #___________________________________ + def two_plus_two(): + array = [0] * 3 + array[0] = 2 + array[1] = 2 + array[2] = array[0] + array[1] + return array[2] + def test_array(self): + cl_four = self.cl_func(self.two_plus_two) + self.assertEquals(cl_four(), 4) + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Thu Oct 16 19:39:44 2003 @@ -1,5 +1,4 @@ -"""\ -PyPy Translator Frontend +"""PyPy Translator Frontend Glue script putting together the various pieces of the translator. Can be used for interactive testing of the translator. Run as: From sanxiyn at codespeak.net Thu Oct 16 22:36:39 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 16 Oct 2003 22:36:39 +0200 (MEST) Subject: [pypy-svn] rev 2002 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031016203639.8FC775A1EE@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 16 22:36:38 2003 New Revision: 2002 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: gencl -- None to nil test_cltrans -- sieve_of_eratosthenes annotation -- bool for consider_op_lt & co. genpyrex -- s/simplify_calls/simplify/ Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Thu Oct 16 22:36:38 2003 @@ -111,13 +111,14 @@ def consider_op_not_(self, op, annotations): annotations.set_type(op.result, bool) - # XXX give them Bool result type - consider_op_lt = consider_op_add - consider_op_le = consider_op_add - consider_op_eq = consider_op_add - consider_op_ne = consider_op_add - consider_op_gt = consider_op_add - consider_op_ge = consider_op_add + def consider_op_lt(self, op, annotations): + annotations.set_type(op.result, bool) + + consider_op_le = consider_op_lt + consider_op_eq = consider_op_lt + consider_op_ne = consider_op_lt + consider_op_gt = consider_op_lt + consider_op_ge = consider_op_lt def consider_op_newtuple(self,op,annotations): annotations.set_type(op.result,tuple) Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Thu Oct 16 22:36:38 2003 @@ -33,6 +33,7 @@ "inplace_add": "+", # weird, but it works "mod": "mod", "lt": "<", + "le": "<=", "eq": "=", "getitem": "aref", } @@ -82,6 +83,8 @@ return "nil" elif isinstance(val, int): return str(val) + elif val is None: + return "nil" else: return "#<" def emitcode(self): Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Thu Oct 16 22:36:38 2003 @@ -112,7 +112,7 @@ def annotate(self, input_arg_types): a = Annotator(self.functiongraph) a.build_types(input_arg_types) - a.simplify_calls() + a.simplify() self.setannotator(a) def setannotator(self, annotator): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Thu Oct 16 22:36:38 2003 @@ -76,5 +76,25 @@ cl_four = self.cl_func(self.two_plus_two) self.assertEquals(cl_four(), 4) + #___________________________________ + def sieve_of_eratosthenes(): + # This one is from: + # The Great Computer Language Shootout + flags = [True] * (8192+1) + count = 0 + i = 2 + while i <= 8192: + if flags[i]: + k = i + i + while k <= 8192: + flags[k] = False + k = k + i + count = count + 1 + i = i + 1 + return count + def test_sieve(self): + cl_sieve = self.cl_func(self.sieve_of_eratosthenes) + self.assertEquals(cl_sieve(), 1028) + if __name__ == '__main__': test.main() From arigo at codespeak.net Fri Oct 17 13:51:37 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 17 Oct 2003 13:51:37 +0200 (MEST) Subject: [pypy-svn] rev 2003 - pypy/trunk/src/pypy/translator Message-ID: <20031017115137.29BDF5A284@thoth.codespeak.net> Author: arigo Date: Fri Oct 17 13:51:36 2003 New Revision: 2003 Modified: pypy/trunk/src/pypy/translator/genpyrex.py Log: added support for 'bool' to genpyrex (using the C 'int' type) Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Fri Oct 17 13:51:36 2003 @@ -162,7 +162,7 @@ return None def get_varname(self, var): - if self.get_type(var) == int: + if self.get_type(var) in (int, bool): prefix = "i_" else: prefix = "" @@ -170,7 +170,7 @@ def _paramvardecl(self, var): vartype = self.get_type(var) - if vartype == int: + if vartype in (int, bool): ctype = "int" else: ctype = "object" From mwh at codespeak.net Fri Oct 17 16:44:18 2003 From: mwh at codespeak.net (mwh at codespeak.net) Date: Fri, 17 Oct 2003 16:44:18 +0200 (MEST) Subject: [pypy-svn] rev 2004 - pypy/trunk/src/pypy/module/test Message-ID: <20031017144418.8D3B85A284@thoth.codespeak.net> Author: mwh Date: Fri Oct 17 16:44:18 2003 New Revision: 2004 Modified: pypy/trunk/src/pypy/module/test/test_sysmodule.py Log: add a couple of (failing) unittests for the presence of sys.path and sys.modules. hpk says he'll fix them soon :-) Modified: pypy/trunk/src/pypy/module/test/test_sysmodule.py ============================================================================== --- pypy/trunk/src/pypy/module/test/test_sysmodule.py (original) +++ pypy/trunk/src/pypy/module/test/test_sysmodule.py Fri Oct 17 16:44:18 2003 @@ -12,6 +12,14 @@ s = self.space self.failUnless_w(s.getattr(self.sys_w, s.wrap("stdout"))) +class AppSysTests(test.AppTestCase): + def test_path_exists(self): + import sys + self.failUnless(hasattr(sys, 'path'), "sys.path gone missing") + def test_modules_exists(self): + import sys + self.failUnless(hasattr(sys, 'modules'), "sys.modules gone missing") + if __name__ == '__main__': test.main() From hpk at codespeak.net Fri Oct 17 17:03:40 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 17 Oct 2003 17:03:40 +0200 (MEST) Subject: [pypy-svn] rev 2005 - in pypy/trunk/src/pypy: interpreter module module/test Message-ID: <20031017150340.E01A15A284@thoth.codespeak.net> Author: hpk Date: Fri Oct 17 17:03:40 2003 New Revision: 2005 Modified: pypy/trunk/src/pypy/interpreter/extmodule.py pypy/trunk/src/pypy/interpreter/gateway.py pypy/trunk/src/pypy/module/builtin.py pypy/trunk/src/pypy/module/sysmodule.py pypy/trunk/src/pypy/module/test/test_sysmodule.py Log: M interpreter/gateway.py added an 'export_values' helper to export any 'w_' attribute of a given dict to a w_namespace. M interpreter/extmodule.py invoke export_values with module instance during initialzation M module/test/test_sysmodule.py added two tests for __dict__ and __name__ M module/sysmodule.py modify 'path' into 'w_path' M module/builtin.py work with space.sys.w_path instead of space.sys.path Modified: pypy/trunk/src/pypy/interpreter/extmodule.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/extmodule.py (original) +++ pypy/trunk/src/pypy/interpreter/extmodule.py Fri Oct 17 17:03:40 2003 @@ -34,6 +34,7 @@ continue space.call_method(self.w_dict, 'setdefault', space.wrap(name), space.wrap(value)) + gateway.export_values(space, self.__dict__, self.w_dict) __metaclass__ = InitializedClass def __initclass__(cls): Modified: pypy/trunk/src/pypy/interpreter/gateway.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/gateway.py (original) +++ pypy/trunk/src/pypy/interpreter/gateway.py Fri Oct 17 17:03:40 2003 @@ -241,6 +241,17 @@ if 'app_'+name not in d: d['app_'+name] = interp2app(obj, name) +def export_values(space, dic, w_namespace): + for name, w_value in dic.items(): + if name.startswith('w_'): + if name == 'w_dict': + w_name = space.wrap('__dict__') + elif name == 'w_name': + w_name = space.wrap('__name__') + else: + w_name = space.wrap(name[2:]) + space.setitem(w_namespace, w_name, w_value) + def importall(d): """Import all app_-level functions as Gateways into a dict.""" for name, obj in d.items(): Modified: pypy/trunk/src/pypy/module/builtin.py ============================================================================== --- pypy/trunk/src/pypy/module/builtin.py (original) +++ pypy/trunk/src/pypy/module/builtin.py Fri Oct 17 17:03:40 2003 @@ -47,7 +47,7 @@ return w_mod import os - for path in space.sys.path: + for path in space.unpackiterable(space.sys.w_path): f = os.path.join(path, space.unwrap(w_modulename) + '.py') if os.path.exists(f): w_mod = space.wrap(Module(space, w_modulename)) Modified: pypy/trunk/src/pypy/module/sysmodule.py ============================================================================== --- pypy/trunk/src/pypy/module/sysmodule.py (original) +++ pypy/trunk/src/pypy/module/sysmodule.py Fri Oct 17 17:03:40 2003 @@ -17,7 +17,7 @@ opd = os.path.dirname pypydir = opd(opd(os.path.abspath(pypy.__file__))) appdir = os.path.join(pypydir, 'pypy', 'appspace') - self.path = [appdir] + [p for p in cpy_sys.path if p!= pypydir] + self.w_path = space.newlist([appdir] + [p for p in cpy_sys.path if p!= pypydir]) self.w_modules = space.newdict([]) ExtModule.__init__(self, space) Modified: pypy/trunk/src/pypy/module/test/test_sysmodule.py ============================================================================== --- pypy/trunk/src/pypy/module/test/test_sysmodule.py (original) +++ pypy/trunk/src/pypy/module/test/test_sysmodule.py Fri Oct 17 17:03:40 2003 @@ -19,6 +19,12 @@ def test_modules_exists(self): import sys self.failUnless(hasattr(sys, 'modules'), "sys.modules gone missing") + def test_dict_exists(self): + import sys + self.failUnless(hasattr(sys, '__dict__'), "sys.__dict__ gone missing") + def test_name_exists(self): + import sys + self.failUnless(hasattr(sys, '__name__'), "sys.__name__ gone missing") if __name__ == '__main__': test.main() From hpk at codespeak.net Fri Oct 17 17:44:45 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 17 Oct 2003 17:44:45 +0200 (MEST) Subject: [pypy-svn] rev 2006 - pypy/trunk/src/pypy/translator Message-ID: <20031017154445.5BFFE5A284@thoth.codespeak.net> Author: hpk Date: Fri Oct 17 17:44:44 2003 New Revision: 2006 Modified: pypy/trunk/src/pypy/translator/annset.py Log: smallish "can't hurt cleanup" Modified: pypy/trunk/src/pypy/translator/annset.py ============================================================================== --- pypy/trunk/src/pypy/translator/annset.py (original) +++ pypy/trunk/src/pypy/translator/annset.py Fri Oct 17 17:44:44 2003 @@ -215,16 +215,15 @@ value found in 'ann2'. Returns False if the variables and constants in the two annotations are not compatible. Assumes that the two annotations have the same functor.""" - for a1, a2 in zip(ann1.args + [ann1.result], - ann2.args + [ann2.result]): + pairs = zip(ann1.args + [ann1.result], ann2.args + [ann2.result]) + for a1, a2 in pairs: v1 = a1.get() if not isinstance(v1, Cell): v2 = a2.get() if not isinstance(v2, Cell) and v2 != v1: return False # match! Set the Cells of ann1... - for a1, a2 in zip(ann1.args + [ann1.result], - ann2.args + [ann2.result]): + for a1, a2 in pairs: v1 = a1.get() if isinstance(v1, Cell): v1.set(a2) From hpk at codespeak.net Fri Oct 17 17:46:49 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 17 Oct 2003 17:46:49 +0200 (MEST) Subject: [pypy-svn] rev 2007 - pypy/trunk/src/pypy/translator/test Message-ID: <20031017154649.7918E5A284@thoth.codespeak.net> Author: hpk Date: Fri Oct 17 17:46:48 2003 New Revision: 2007 Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: check for successfull execution of 'clisp --version' and use 'clisp' then (if no PYPY_CL was provided) Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Fri Oct 17 17:46:48 2003 @@ -2,6 +2,7 @@ from pypy.tool import test from pypy.tool.udir import udir from pypy.translator.test.buildcl import make_cl_func +from vpath.adapter.process import exec_cmd, ExecutionFailed class GenCLTestCase(test.IntTestCase): @@ -11,7 +12,13 @@ if cl: self.cl = cl else: - raise test.TestSkip + try: + out = exec_cmd('clisp --version') + except ExecutionFailed: + raise test.TestSkip, "no list interpreter configured and no 'clisp' found" + else: + self.cl = 'clisp' + def cl_func(self, func): return make_cl_func(func, self.cl, udir) From hpk at codespeak.net Fri Oct 17 17:49:30 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 17 Oct 2003 17:49:30 +0200 (MEST) Subject: [pypy-svn] rev 2008 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031017154930.7EEB65A284@thoth.codespeak.net> Author: hpk Date: Fri Oct 17 17:49:29 2003 New Revision: 2008 Added: pypy/trunk/src/pypy/translator/test/benchmark.py Modified: pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: - added the sieve_of_erastosthenes test to pyrex and fixed the missing 'setitem' operation in genpyrex. - added a benchmark script which contains the boilerplate to compare speed of a python function - executed by CPython - executed via a Pyrex-Module Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Fri Oct 17 17:49:29 2003 @@ -89,6 +89,10 @@ a = self.argnames return "%s = %s(%s)" % (self.resultname, a[0], ", ".join(a[1:])) + def op_setitem(self): + a = self.argnames + return "%s[%s] = %s" % (a[0], a[1], a[2]) + def op_getattr(self): args = self.argnames attr = self.op.args[1] Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Fri Oct 17 17:49:29 2003 @@ -64,11 +64,9 @@ break return graph - - def simplify_graph(graph): """apply all the existing optimisations to the graph""" - graph = eliminate_empty_blocks(graph) + #XXX doesn't work right on sieve_of_eras... graph = eliminate_empty_blocks(graph) graph = eliminate_fun_params_renaming(graph) return graph Added: pypy/trunk/src/pypy/translator/test/benchmark.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/benchmark.py Fri Oct 17 17:49:29 2003 @@ -0,0 +1,27 @@ +import autopath +from pypy.tool import test +from pypy.tool.udir import udir +from pypy.translator.test.test_pyrextrans import make_cfunc + +def benchmark(func): + try: + func = func.im_func + except AttributeError: + pass + c_func = make_cfunc(func) + print "generated c-func for", func.func_name + t1 = timeit(100, func) + t2 = timeit(100, c_func) + print "cpython func ", t1, "seconds" + print "pypy/pyrex/cmodule ", t2, "seconds" + +def timeit(num, func, *args): + from time import time as now + start = now() + for i in xrange(num): + func(*args) + return now()-start + +if __name__ == '__main__': + from pypy.translator.test.test_pyrextrans import PyrexGenTestCase + benchmark(PyrexGenTestCase.sieve_of_eratosthenes) Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Fri Oct 17 17:49:29 2003 @@ -12,33 +12,36 @@ else: def make_dot(*args): pass + +def make_cfunc(func): + """ make a pyrex-generated cfunction from the given func """ + import inspect + try: + func = func.im_func + except AttributeError: + pass + from pypy.objspace.flow import Space + space = Space() + name = func.func_name + funcgraph = space.build_flow(func) + from pypy.translator.simplify import simplify_graph + simplify_graph(funcgraph) + funcgraph.source = inspect.getsource(func) + result = GenPyrex(funcgraph).emitcode() + make_dot(funcgraph, udir, 'ps') + mod = make_module_from_pyxstring(name, udir, result) + return getattr(mod, name) + class PyrexGenTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') - def make_cfunc(self, func): - """ make a pyrex-generated cfunction from the given func """ - import inspect - try: - func = func.im_func - except AttributeError: - pass - name = func.func_name - funcgraph = self.space.build_flow(func) - from pypy.translator.simplify import simplify_graph - simplify_graph(funcgraph) - funcgraph.source = inspect.getsource(func) - result = GenPyrex(funcgraph).emitcode() - make_dot(funcgraph, udir, 'ps') - mod = make_module_from_pyxstring(name, udir, result) - return getattr(mod, name) - #____________________________________________________ def simple_func(i): return i+1 def test_simple_func(self): - cfunc = self.make_cfunc(self.simple_func) + cfunc = make_cfunc(self.simple_func) self.assertEquals(cfunc(1), 2) #____________________________________________________ @@ -50,7 +53,7 @@ return total def test_while_func(self): - while_func = self.make_cfunc(self.while_func) + while_func = make_cfunc(self.while_func) self.assertEquals(while_func(10), 55) #____________________________________________________ @@ -67,7 +70,7 @@ return s def test_nested_whiles(self): - nested_whiles = self.make_cfunc(self.nested_whiles) + nested_whiles = make_cfunc(self.nested_whiles) self.assertEquals(nested_whiles(111, 114), '...!...!...!...!...!') @@ -81,7 +84,7 @@ return lst def test_poor_man_range(self): - poor_man_range = self.make_cfunc(self.poor_man_range) + poor_man_range = make_cfunc(self.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) #____________________________________________________ @@ -92,7 +95,7 @@ def test_simple_id(self): #we just want to see, if renaming of parameter works correctly #if the first branch is the end branch - simple_id = self.make_cfunc(self.simple_id) + simple_id = make_cfunc(self.simple_id) self.assertEquals(simple_id(9), 9) #____________________________________________________ @@ -105,7 +108,7 @@ return b def test_branch_id(self): - branch_id = self.make_cfunc(self.branch_id) + branch_id = make_cfunc(self.branch_id) self.assertEquals(branch_id(1, 2, 3), 2) self.assertEquals(branch_id(0, 2, 3), 3) @@ -119,7 +122,7 @@ return b.f + b.g def _test_attrs(self): - attrs = self.make_cfunc(self.attrs) + attrs = make_cfunc(self.attrs) self.assertEquals(attrs(), 9) #_____________________________________________________ @@ -128,9 +131,29 @@ return pow(2,2) def test_builtinusage(self): - fun = self.make_cfunc(self.builtinusage) + fun = make_cfunc(self.builtinusage) self.assertEquals(fun(), 4) + #_____________________________________________________ + def sieve_of_eratosthenes(): + # This one is from: + # The Great Computer Language Shootout + flags = [True] * (8192+1) + count = 0 + i = 2 + while i <= 8192: + if flags[i]: + k = i + i + while k <= 8192: + flags[k] = False + k = k + i + count = count + 1 + i = i + 1 + return count + + def test_sieve(self): + sieve = make_cfunc(self.sieve_of_eratosthenes) + self.assertEquals(sieve(), 1028) if __name__ == '__main__': test.main() From hpk at codespeak.net Fri Oct 17 22:07:04 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 17 Oct 2003 22:07:04 +0200 (MEST) Subject: [pypy-svn] rev 2011 - pypy/trunk/doc/sprintinfo Message-ID: <20031017200704.3E99C5A284@thoth.codespeak.net> Author: hpk Date: Fri Oct 17 22:07:03 2003 New Revision: 2011 Added: pypy/trunk/doc/sprintinfo/checklist.txt Log: a first draft for a checklist for organizing pypy sprints. Added: pypy/trunk/doc/sprintinfo/checklist.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/sprintinfo/checklist.txt Fri Oct 17 22:07:03 2003 @@ -0,0 +1,72 @@ +PyPy Sprint Checklist +===================== + +This is a hands-on checklist for organizing a PyPy sprint. +Usually there is a least one person driving the sprint from +the developer's side. And one or more people preparing the +event locally (organizing room + internet, providing some +information about local oddities etc. :-) + +pre +--- + +- find someone who can organize locally a good place with (at least) + these characteristics: + + - for 20 people + + - with an permananent internet connection + + - with enough chairs and tables + + - with a nearby possibility to get food + + - facilities to make coffee and tea + + - a whiteboard or something to draw pictures on (in a shared session) + + - a beamer, if possible (otherwise try to bring it externally) + +- discuss goals with developers and (pre-)announce sprint + + - first clear the list of pypy-sprint subscribers + + - pre-announce to pypy-dev telling shortly about the planned event, + goals in order to gather feedback if the planned event will get enough + "insiders" interested. + + - one developer should (after appropriate discussion) make the announcement + to c.l.py & python-dev plus any lists which might be interested for that + specific event (like e.g. lispers :-). Don't forget to mention all + the helpful local people who make this event happen! + + +logistics +--------- + +- make sure there is a detailed description how to get to the sprint + location by train, plane, car + +- try to help people to find accomodation (it's usually a lot easier for + a local to judge/recommend (or organize in the best case) accomodation + than for all the people from abroad + +- if neccessary recommend a week-ticket and some public transport plan + so that people know how to move in that city. + + +technical +--------- + +- subscribe to pypy-dev + +- everyone has to have an account on codespeak and should check *BEFORE* + the sprint if everything works (including subversion-checkouts/checkins) + +- follow the discussion on pypy-sprint/pypy-dev at least the two weeks + before the sprint :-) + +at the sprint +------------- + +- to be done :-) From hpk at codespeak.net Mon Oct 20 11:27:49 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Mon, 20 Oct 2003 11:27:49 +0200 (MEST) Subject: [pypy-svn] rev 2013 - pypy/trunk/doc/sprintinfo Message-ID: <20031020092749.D9A055A284@thoth.codespeak.net> Author: hpk Date: Mon Oct 20 11:27:48 2003 New Revision: 2013 Modified: pypy/trunk/doc/sprintinfo/checklist.txt Log: stated roles a bit more clearly Modified: pypy/trunk/doc/sprintinfo/checklist.txt ============================================================================== --- pypy/trunk/doc/sprintinfo/checklist.txt (original) +++ pypy/trunk/doc/sprintinfo/checklist.txt Mon Oct 20 11:27:48 2003 @@ -7,8 +7,8 @@ event locally (organizing room + internet, providing some information about local oddities etc. :-) -pre ---- +pre (usually done by a local organizer + a pypy-developer) +---------------------------------------------------------- - find someone who can organize locally a good place with (at least) these characteristics: @@ -41,8 +41,8 @@ the helpful local people who make this event happen! -logistics ---------- +logistics (usually done by the local organizer) +----------------------------------------------- - make sure there is a detailed description how to get to the sprint location by train, plane, car @@ -55,8 +55,8 @@ so that people know how to move in that city. -technical ---------- +technical advise for sprinters +------------------------------ - subscribe to pypy-dev From sanxiyn at codespeak.net Tue Oct 21 07:35:50 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 07:35:50 +0200 (MEST) Subject: [pypy-svn] rev 2014 - pypy/trunk/src/pypy/translator Message-ID: <20031021053550.E2EEF5A8AF@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 07:35:49 2003 New Revision: 2014 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/peepfgt.py Log: simplify_hooks cleanup. Moved simplify_hooks from class to instance. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Tue Oct 21 07:35:49 2003 @@ -10,6 +10,7 @@ def __init__(self, flowgraph): self.flowgraph = flowgraph + self.simplify_hooks = [] def build_types(self, input_arg_types): input_ann = AnnotationSet() @@ -63,8 +64,6 @@ newops.append(op) block.operations = tuple(newops) - simplify_hooks = [] - def simplify(self): self.simplify_calls() for hook in self.simplify_hooks: Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 21 07:35:49 2003 @@ -2,8 +2,7 @@ from pypy.translator.flowmodel import * from pypy.translator.annotation import Annotator -from pypy.translator.peepfgt import register -register() +from pypy.translator.peepfgt import register as fgt_register # For 2.2 -- sanxiyn if not isinstance(bool, type): @@ -66,6 +65,7 @@ def annotate(self, input_arg_types): ann = Annotator(self.fun) ann.build_types(input_arg_types) + fgt_register(ann) ann.simplify() self.ann = ann def str(self, obj): Modified: pypy/trunk/src/pypy/translator/peepfgt.py ============================================================================== --- pypy/trunk/src/pypy/translator/peepfgt.py (original) +++ pypy/trunk/src/pypy/translator/peepfgt.py Tue Oct 21 07:35:49 2003 @@ -24,5 +24,5 @@ (new_op,) + operations[i+2:]) -def register(): - Annotator.simplify_hooks.append(transform_allocate) +def register(ann): + ann.simplify_hooks.append(transform_allocate) From sanxiyn at codespeak.net Tue Oct 21 11:59:34 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 11:59:34 +0200 (MEST) Subject: [pypy-svn] rev 2015 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031021095934.4157B5A8C1@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 11:59:33 2003 New Revision: 2015 Added: pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh Modified: pypy/trunk/src/pypy/translator/peepfgt.py (props changed) pypy/trunk/src/pypy/translator/test/benchmark.py (props changed) pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: benchmark, peepfgt: fixeol :-) Refined CL detection. PYPY_CL is tried, and then 'which' command is tried with os.system. (If it doesn't exist it will always fail, so no problem.) CMU CL is detected, and cmuclinvoke script will be used. Copy it to your PATH and make it executable. Added: pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh Tue Oct 21 11:59:33 2003 @@ -0,0 +1,4 @@ +#!/bin/sh +# Copy this to your PATH +lisp -batch -eval "(compile-file \"$1\")(quit)" >/dev/null 2>&1 +lisp -batch -quiet -eval "(load (compile-file-pathname \"$1\"))(quit)" Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 21 11:59:33 2003 @@ -12,12 +12,25 @@ if cl: self.cl = cl else: - try: - out = exec_cmd('clisp --version') - except ExecutionFailed: - raise test.TestSkip, "no list interpreter configured and no 'clisp' found" + cl = self.cl_detect() + if cl: + self.cl = cl else: - self.cl = 'clisp' + raise (test.TestSkip, + "Common Lisp neither configured nor detected.") + + def cl_detect(self): + import os + if self.is_on_path("clisp"): + return "clisp" + elif self.is_on_path("lisp"): + if self.is_on_path("cmuclinvoke.sh"): + return "cmuclinvoke.sh" + return None + + def is_on_path(self, name): + import os + return os.system("which %s >/dev/null" % name) == 0 def cl_func(self, func): return make_cl_func(func, self.cl, udir) From sanxiyn at codespeak.net Tue Oct 21 13:01:22 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 13:01:22 +0200 (MEST) Subject: [pypy-svn] rev 2016 - pypy/trunk/src/pypy/translator/test Message-ID: <20031021110122.849575A982@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 13:01:21 2003 New Revision: 2016 Modified: pypy/trunk/src/pypy/translator/test/benchmark.py pypy/trunk/src/pypy/translator/test/buildcl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: Extracted CL detection functionality from testcase to module. After all, it doesn't belong there. Added CL to benchmark, and commented them out. Try uncommenting yourself. It's very slow. Modified: pypy/trunk/src/pypy/translator/test/benchmark.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/benchmark.py (original) +++ pypy/trunk/src/pypy/translator/test/benchmark.py Tue Oct 21 13:01:21 2003 @@ -2,6 +2,7 @@ from pypy.tool import test from pypy.tool.udir import udir from pypy.translator.test.test_pyrextrans import make_cfunc +from pypy.translator.test.test_cltrans import make_cl_func def benchmark(func): try: @@ -9,11 +10,14 @@ except AttributeError: pass c_func = make_cfunc(func) + #cl_func = make_cl_func(func) print "generated c-func for", func.func_name t1 = timeit(100, func) t2 = timeit(100, c_func) + #t3 = timeit(100, cl_func) print "cpython func ", t1, "seconds" print "pypy/pyrex/cmodule ", t2, "seconds" + #print "cl (experimental) ", t3, "seconds" def timeit(num, func, *args): from time import time as now Modified: pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/test/buildcl.py Tue Oct 21 13:01:21 2003 @@ -16,7 +16,7 @@ else: return int(s) -def make_cl_func(func, cl, path): +def _make_cl_func(func, cl, path): fun = FlowObjSpace().build_flow(func) gen = GenCL(fun) out = gen.emitcode() Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 21 13:01:21 2003 @@ -1,39 +1,42 @@ import autopath from pypy.tool import test from pypy.tool.udir import udir -from pypy.translator.test.buildcl import make_cl_func +from pypy.translator.test.buildcl import _make_cl_func from vpath.adapter.process import exec_cmd, ExecutionFailed + +import os + +def get_cl(): + cl = os.getenv("PYPY_CL") + if cl: return cl + cl = cl_detect() + if cl: return cl + return None + +def cl_detect(self): + if self.is_on_path("clisp"): + return "clisp" + elif self.is_on_path("lisp"): + if self.is_on_path("cmuclinvoke.sh"): + return "cmuclinvoke.sh" + return None + +def is_on_path(self, name): + return os.system("which %s >/dev/null" % name) == 0 + +global_cl = get_cl() + +def make_cl_func(func): + return _make_cl_func(func, global_cl, udir) + + class GenCLTestCase(test.IntTestCase): def setUp(self): - import os - cl = os.getenv("PYPY_CL") - if cl: - self.cl = cl - else: - cl = self.cl_detect() - if cl: - self.cl = cl - else: - raise (test.TestSkip, - "Common Lisp neither configured nor detected.") - - def cl_detect(self): - import os - if self.is_on_path("clisp"): - return "clisp" - elif self.is_on_path("lisp"): - if self.is_on_path("cmuclinvoke.sh"): - return "cmuclinvoke.sh" - return None - - def is_on_path(self, name): - import os - return os.system("which %s >/dev/null" % name) == 0 - - def cl_func(self, func): - return make_cl_func(func, self.cl, udir) + if not global_cl: + raise (test.TestSkip, + "Common Lisp neither configured nor detected.") #___________________________________ def if_then_else(cond, x, y): @@ -42,11 +45,11 @@ else: return y def test_if_bool(self): - cl_if = self.cl_func(self.if_then_else) + cl_if = make_cl_func(self.if_then_else) self.assertEquals(cl_if(True, 50, 100), 50) self.assertEquals(cl_if(False, 50, 100), 100) def test_if_int(self): - cl_if = self.cl_func(self.if_then_else) + cl_if = make_cl_func(self.if_then_else) self.assertEquals(cl_if(0, 50, 100), 100) self.assertEquals(cl_if(1, 50, 100), 50) @@ -59,7 +62,7 @@ r = a % b return b def test_gcd(self): - cl_gcd = self.cl_func(self.my_gcd) + cl_gcd = make_cl_func(self.my_gcd) self.assertEquals(cl_gcd(96, 64), 32) #___________________________________ @@ -72,7 +75,7 @@ div += 1 return n == sum def test_is_perfect(self): # pun intended - cl_perfect = self.cl_func(self.is_perfect_number) + cl_perfect = make_cl_func(self.is_perfect_number) self.assertEquals(cl_perfect(24), False) self.assertEquals(cl_perfect(28), True) @@ -80,7 +83,7 @@ def my_bool(x): return not not x def test_bool(self): - cl_bool = self.cl_func(self.my_bool) + cl_bool = make_cl_func(self.my_bool) self.assertEquals(cl_bool(0), False) self.assertEquals(cl_bool(42), True) self.assertEquals(cl_bool(True), True) @@ -93,7 +96,7 @@ array[2] = array[0] + array[1] return array[2] def test_array(self): - cl_four = self.cl_func(self.two_plus_two) + cl_four = make_cl_func(self.two_plus_two) self.assertEquals(cl_four(), 4) #___________________________________ @@ -113,7 +116,7 @@ i = i + 1 return count def test_sieve(self): - cl_sieve = self.cl_func(self.sieve_of_eratosthenes) + cl_sieve = make_cl_func(self.sieve_of_eratosthenes) self.assertEquals(cl_sieve(), 1028) if __name__ == '__main__': From sanxiyn at codespeak.net Tue Oct 21 14:52:13 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 14:52:13 +0200 (MEST) Subject: [pypy-svn] rev 2017 - pypy/trunk/src/pypy/translator/test Message-ID: <20031021125213.B29F05A986@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 14:52:13 2003 New Revision: 2017 Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: Sorry. Stupid mistakes. Now (hopefully) fixed. Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 21 14:52:13 2003 @@ -14,15 +14,15 @@ if cl: return cl return None -def cl_detect(self): - if self.is_on_path("clisp"): +def cl_detect(): + if is_on_path("clisp"): return "clisp" - elif self.is_on_path("lisp"): - if self.is_on_path("cmuclinvoke.sh"): + elif is_on_path("lisp"): + if is_on_path("cmuclinvoke.sh"): return "cmuclinvoke.sh" return None -def is_on_path(self, name): +def is_on_path(name): return os.system("which %s >/dev/null" % name) == 0 global_cl = get_cl() From sanxiyn at codespeak.net Tue Oct 21 16:10:21 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 16:10:21 +0200 (MEST) Subject: [pypy-svn] rev 2018 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031021141021.D58E65A986@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 16:10:21 2003 New Revision: 2018 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/benchmark.py Log: gencl: block nil + let + tagbody = prog! benchmark: proper CL integration Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 21 16:10:21 2003 @@ -98,26 +98,35 @@ def emit(self): self.emit_defun(self.fun) def emit_defun(self, fun): - print "(defun", fun.functionname, "(", - for arg in fun.get_args(): + print "(defun", fun.functionname + arglist = fun.get_args() + print "(", + for arg in arglist: print self.str(arg), print ")" - print "(block nil" - print "(tagbody" + print "(prog" startblock = fun.startblock blocklist = [] def collect_block(node): if isinstance(node, BasicBlock): blocklist.append(node) startblock.visit(collect_block) + varlist = [] for block in blocklist: tag = len(self.blockref) self.blockref[block] = tag + varlist.extend(block.getlocals()) + print "(", + for var in varlist: + if var in arglist: + print "(", self.str(var), self.str(var), ")" + else: + print self.str(var), + print ")" for block in blocklist: self.emit_block(block) print ")" print ")" - print ")" def emit_block(self, block): self.cur_block = block tag = self.blockref[block] Modified: pypy/trunk/src/pypy/translator/test/benchmark.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/benchmark.py (original) +++ pypy/trunk/src/pypy/translator/test/benchmark.py Tue Oct 21 16:10:21 2003 @@ -2,7 +2,7 @@ from pypy.tool import test from pypy.tool.udir import udir from pypy.translator.test.test_pyrextrans import make_cfunc -from pypy.translator.test.test_cltrans import make_cl_func +from pypy.translator.test.test_cltrans import global_cl, make_cl_func def benchmark(func): try: @@ -10,14 +10,17 @@ except AttributeError: pass c_func = make_cfunc(func) - #cl_func = make_cl_func(func) + if global_cl: + cl_func = make_cl_func(func) print "generated c-func for", func.func_name t1 = timeit(100, func) t2 = timeit(100, c_func) - #t3 = timeit(100, cl_func) + if global_cl: + t3 = timeit(100, cl_func) print "cpython func ", t1, "seconds" print "pypy/pyrex/cmodule ", t2, "seconds" - #print "cl (experimental) ", t3, "seconds" + if global_cl: + print "cl (experimental) ", t3, "seconds", global_cl def timeit(num, func, *args): from time import time as now From sanxiyn at codespeak.net Tue Oct 21 16:15:18 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 21 Oct 2003 16:15:18 +0200 (MEST) Subject: [pypy-svn] rev 2019 - pypy/trunk/src/pypy/translator Message-ID: <20031021141518.0257C5A986@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 21 16:15:18 2003 New Revision: 2019 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: cosmetic Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 21 16:15:18 2003 @@ -119,7 +119,7 @@ print "(", for var in varlist: if var in arglist: - print "(", self.str(var), self.str(var), ")" + print "(", self.str(var), self.str(var), ")", else: print self.str(var), print ")" From hpk at codespeak.net Thu Oct 23 14:26:17 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 23 Oct 2003 14:26:17 +0200 (MEST) Subject: [pypy-svn] rev 2022 - pypy/trunk/src/pypy Message-ID: <20031023122617.043255A5FE@thoth.codespeak.net> Author: hpk Date: Thu Oct 23 14:26:17 2003 New Revision: 2022 Modified: pypy/trunk/src/pypy/TODO Log: updated the TODO list a bit. armin and me plan to do some refactoring of the flowmodel and the PyPy sprint announcement on saturday (25th oct 2003). Modified: pypy/trunk/src/pypy/TODO ============================================================================== --- pypy/trunk/src/pypy/TODO (original) +++ pypy/trunk/src/pypy/TODO Thu Oct 23 14:26:17 2003 @@ -1,13 +1,20 @@ +Task: refactor the flowmodel to translator/flowmodel.idea + (Armin and Holger plan on doing this next saturday) + +Task: announce the AmsterdamSprint (maybe together with the next task) +Task: announce the EU proposal + (Armin and Holger plan on doing this next saturday) + Task: update pypy homepage +Task: add more builtins! (like e.g. 'dir') + Task: fix interpreter-level object introspection from app-level (make dis.dis(dis.dis) goal work as a side effect) Task: provide an importer that can include packages (we can't at the moment) -Task: complete builtins! (like e.g. 'dir') - Task: slicing with assigments & more small things (finish StdObjSpace review!) lst[::-2] = lst2 @@ -27,5 +34,3 @@ AnnSpace or other deprecated stuff Task: (documentation) do more and enhance - - From sanxiyn at codespeak.net Thu Oct 23 18:29:15 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 23 Oct 2003 18:29:15 +0200 (MEST) Subject: [pypy-svn] rev 2024 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031023162915.AE3E25AC02@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 23 18:29:15 2003 New Revision: 2024 Added: pypy/trunk/src/pypy/translator/test/sbclinvoke.sh Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: Now SBCL works. gencl fix: declare variables only once. (it caused SBCL error.) Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Thu Oct 23 18:29:15 2003 @@ -111,11 +111,13 @@ if isinstance(node, BasicBlock): blocklist.append(node) startblock.visit(collect_block) - varlist = [] + varlist = {} for block in blocklist: tag = len(self.blockref) self.blockref[block] = tag - varlist.extend(block.getlocals()) + for var in block.getlocals(): + varlist[var] = None + varlist = varlist.keys() print "(", for var in varlist: if var in arglist: Added: pypy/trunk/src/pypy/translator/test/sbclinvoke.sh ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/sbclinvoke.sh Thu Oct 23 18:29:15 2003 @@ -0,0 +1,3 @@ +#!/bin/sh +# Copy this to your PATH +sbcl --noinform --disable-debugger --load $1 --eval '(quit)' Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Thu Oct 23 18:29:15 2003 @@ -20,6 +20,9 @@ elif is_on_path("lisp"): if is_on_path("cmuclinvoke.sh"): return "cmuclinvoke.sh" + elif is_on_path("sbcl"): + if is_on_path("sbclinvoke.sh"): + return "sbclinvoke.sh" return None def is_on_path(name): From hpk at codespeak.net Thu Oct 23 18:48:05 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 23 Oct 2003 18:48:05 +0200 (MEST) Subject: [pypy-svn] rev 2025 - pypy/trunk/src/pypy/translator Message-ID: <20031023164805.A08FC5B15F@thoth.codespeak.net> Author: hpk Date: Thu Oct 23 18:48:05 2003 New Revision: 2025 Modified: pypy/trunk/src/pypy/translator/flowmodel.idea Log: annotated the attrs of our to-be flowmodel a bit Modified: pypy/trunk/src/pypy/translator/flowmodel.idea ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.idea (original) +++ pypy/trunk/src/pypy/translator/flowmodel.idea Thu Oct 23 18:48:05 2003 @@ -1,35 +1,35 @@ -discussion from 4th of october 2003 +basic discussion from 4th of october 2003 class FunctionGraph: - startblock - returnblock - name + startblock # + returnblock # + name # function name (possibly mangled already) class Link: - exitcase - args - target + exitcase # Constant (or so) + args # mixed list of variable/const + target # block class Block: - input_args - operations + input_args # mixed list of variable/const + operations # list of SpaceOperation(s) exitswitch # variable - exits + exits # list of Link(s) class ReturnBlock: input_args # a single variable - operations = None - exits = () + operations = None # for uniformity + exits = () # ? class Variable: name class Const: - value + value # a concrete value class SpaceOperation: - opname - args # list of variable or Constant (can be mixed) + opname # operation name + args # mixed list of variables/Constants (can be mixed) result # either Variable or Constant instance From sanxiyn at codespeak.net Thu Oct 23 20:16:47 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 23 Oct 2003 20:16:47 +0200 (MEST) Subject: [pypy-svn] rev 2026 - pypy/trunk/src/pypy/translator/test Message-ID: <20031023181647.99F8A5B15F@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 23 20:16:45 2003 New Revision: 2026 Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: make_dot is off by default. Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Thu Oct 23 20:16:45 2003 @@ -5,7 +5,8 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = True + +make_dot = False if make_dot: from pypy.translator.test.make_dot import make_dot Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Thu Oct 23 20:16:45 2003 @@ -1,4 +1,3 @@ - import autopath from pypy.tool import test from pypy.tool.udir import udir @@ -6,13 +5,15 @@ from pypy.translator.flowmodel import * from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -make_dot = 0 + +make_dot = False if make_dot: from pypy.translator.test.make_dot import make_dot else: def make_dot(*args): pass + class TypedPyrexTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') From sanxiyn at codespeak.net Thu Oct 23 20:26:05 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 23 Oct 2003 20:26:05 +0200 (MEST) Subject: [pypy-svn] rev 2027 - pypy/trunk/src/pypy/translator/test Message-ID: <20031023182605.95C655B15F@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 23 20:26:04 2003 New Revision: 2027 Added: pypy/trunk/src/pypy/translator/test/snippet.py Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: moved translator test functions from each test case to: the glorious new file: snippet.py read snippet.py docstring for my plan but for now, nothing is changed, and only the code duplcation is removed. Added: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/test/snippet.py Thu Oct 23 20:26:04 2003 @@ -0,0 +1,143 @@ +"""Snippets for translation + +This module holds various snippets, to be used by translator +unittests. + +TODO, or sanxiyn's plan: + +Each snippet should know about suitable arguments to test it. +(Otherwise, there's a duplcation!) Should the result also be +stored? It can computed by CPython if we don't store it. + +In case of typed translation test, we can give input_arg_types +by actually trying type() on arguments. + +Each unittest should define a list of functions which it is able +to translate correctly, and import the list for tests. When +a translator can handle more, simply adding a function to the +list should suffice. + +But for now, none of the above applies. +""" + +def if_then_else(cond, x, y): + if cond: + return x + else: + return y + +def my_gcd(a, b): + r = a % b + while r: + a = b + b = r + r = a % b + return b + +def is_perfect_number(n): + div = 1 + sum = 0 + while div < n: + if n % div == 0: + sum += div + div += 1 + return n == sum + +def my_bool(x): + return not not x + +def two_plus_two(): + """Array test""" + array = [0] * 3 + array[0] = 2 + array[1] = 2 + array[2] = array[0] + array[1] + return array[2] + +def sieve_of_eratosthenes(): + """Sieve of Eratosthenes + + This one is from an infamous benchmark, "The Great Computer + Language Shootout". + + URL is: http://www.bagley.org/~doug/shootout/ + """ + flags = [True] * (8192+1) + count = 0 + i = 2 + while i <= 8192: + if flags[i]: + k = i + i + while k <= 8192: + flags[k] = False + k = k + i + count = count + 1 + i = i + 1 + return count + +def simple_func(i): + return i + 1 + +def while_func(i): + total = 0 + while i > 0: + total = total + i + i = i - 1 + return total + +def nested_whiles(i, j): + s = '' + z = 5 + while z > 0: + z = z - 1 + u = i + while u < j: + u = u + 1 + s = s + '.' + s = s + '!' + return s + +def poor_man_range(i): + lst = [] + while i > 0: + i = i - 1 + lst.append(i) + lst.reverse() + return lst + +def simple_id(x): + return x + +def branch_id(cond, a, b): + while 1: + if cond: + return a + else: + return b + +def attrs(): + def b(): pass + b.f = 4 + b.g = 5 + return b.f + b.g + +def builtinusage(): + return pow(2, 2) + +def yast(lst): + total = 0 + for z in lst: + total = total + z + return total + +def time_waster(n): + "Arbitrary test function" + i = 0 + x = 1 + while i 0: - total = total + i - i = i - 1 - return total - def test_while_func(self): - while_func = make_cfunc(self.while_func) + while_func = make_cfunc(t.while_func) self.assertEquals(while_func(10), 55) - #____________________________________________________ - def nested_whiles(i, j): - s = '' - z = 5 - while z > 0: - z = z - 1 - u = i - while u < j: - u = u + 1 - s = s + '.' - s = s + '!' - return s - def test_nested_whiles(self): - nested_whiles = make_cfunc(self.nested_whiles) + nested_whiles = make_cfunc(t.nested_whiles) self.assertEquals(nested_whiles(111, 114), '...!...!...!...!...!') - #____________________________________________________ - def poor_man_range(i): - lst = [] - while i > 0: - i = i - 1 - lst.append(i) - lst.reverse() - return lst - def test_poor_man_range(self): - poor_man_range = make_cfunc(self.poor_man_range) + poor_man_range = make_cfunc(t.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) - #____________________________________________________ - - def simple_id(x): - return x - def test_simple_id(self): #we just want to see, if renaming of parameter works correctly #if the first branch is the end branch - simple_id = make_cfunc(self.simple_id) + simple_id = make_cfunc(t.simple_id) self.assertEquals(simple_id(9), 9) - #____________________________________________________ - - def branch_id(cond, a, b): - while 1: - if cond: - return a - else: - return b - def test_branch_id(self): - branch_id = make_cfunc(self.branch_id) + branch_id = make_cfunc(t.branch_id) self.assertEquals(branch_id(1, 2, 3), 2) self.assertEquals(branch_id(0, 2, 3), 3) - #____________________________________________________ - - def attrs(): - def b(): pass - b.f = 4 - b.g = 5 - - return b.f + b.g - - def _test_attrs(self): - attrs = make_cfunc(self.attrs) + def dont_test_attrs(self): + attrs = make_cfunc(t.attrs) self.assertEquals(attrs(), 9) - #_____________________________________________________ - - def builtinusage(): - return pow(2,2) - def test_builtinusage(self): - fun = make_cfunc(self.builtinusage) + fun = make_cfunc(t.builtinusage) self.assertEquals(fun(), 4) - #_____________________________________________________ - def sieve_of_eratosthenes(): - # This one is from: - # The Great Computer Language Shootout - flags = [True] * (8192+1) - count = 0 - i = 2 - while i <= 8192: - if flags[i]: - k = i + i - while k <= 8192: - flags[k] = False - k = k + i - count = count + 1 - i = i + 1 - return count - def test_sieve(self): - sieve = make_cfunc(self.sieve_of_eratosthenes) + sieve = make_cfunc(t.sieve_of_eratosthenes) self.assertEquals(sieve(), 1028) if __name__ == '__main__': Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Thu Oct 23 20:26:04 2003 @@ -14,7 +14,10 @@ def make_dot(*args): pass +from pypy.translator.test import snippet as t + class TypedPyrexTestCase(test.IntTestCase): + def setUp(self): self.space = test.objspace('flow') @@ -35,83 +38,29 @@ mod = make_module_from_pyxstring(name, udir, result) return getattr(mod, name) - #____________________________________________________ - def simple_func(i): - return i+1 - def test_simple_func(self): - cfunc = self.make_cfunc(self.simple_func, [int]) + cfunc = self.make_cfunc(t.simple_func, [int]) self.assertEquals(cfunc(1), 2) - #____________________________________________________ - def while_func(i): - total = 0 - while i > 0: - total = total + i - i = i - 1 - return total - def test_while_func(self): - while_func = self.make_cfunc(self.while_func, [int]) + while_func = self.make_cfunc(t.while_func, [int]) self.assertEquals(while_func(10), 55) - #____________________________________________________ - def yast(lst): - total = 0 - for z in lst: - total = total + z - return total - def test_yast(self): - yast = self.make_cfunc(self.yast, [list]) + yast = self.make_cfunc(t.yast, [list]) self.assertEquals(yast(range(12)), 66) - #____________________________________________________ - def nested_whiles(i, j): - s = '' - z = 5 - while z > 0: - z = z - 1 - u = i - while u < j: - u = u + 1 - s = s + '.' - s = s + '!' - return s - def test_nested_whiles(self): - nested_whiles = self.make_cfunc(self.nested_whiles, [int, int]) + nested_whiles = self.make_cfunc(t.nested_whiles, [int, int]) self.assertEquals(nested_whiles(111, 114), '...!...!...!...!...!') - #____________________________________________________ - def poor_man_range(i): - lst = [] - while i > 0: - i = i - 1 - lst.append(i) - lst.reverse() - return lst - def test_poor_man_range(self): - poor_man_range = self.make_cfunc(self.poor_man_range, [int]) + poor_man_range = self.make_cfunc(t.poor_man_range, [int]) self.assertEquals(poor_man_range(10), range(10)) - #____________________________________________________ - def time_waster(n): - "Arbitrary test function." - i = 0 - x = 1 - while i Author: sanxiyn Date: Fri Oct 24 03:24:46 2003 New Revision: 2028 Modified: pypy/trunk/src/pypy/translator/test/benchmark.py Log: import benchmark function from snippet Modified: pypy/trunk/src/pypy/translator/test/benchmark.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/benchmark.py (original) +++ pypy/trunk/src/pypy/translator/test/benchmark.py Fri Oct 24 03:24:46 2003 @@ -30,5 +30,5 @@ return now()-start if __name__ == '__main__': - from pypy.translator.test.test_pyrextrans import PyrexGenTestCase - benchmark(PyrexGenTestCase.sieve_of_eratosthenes) + from pypy.translator.test.snippet import sieve_of_eratosthenes + benchmark(sieve_of_eratosthenes) From sanxiyn at codespeak.net Fri Oct 24 19:36:42 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 24 Oct 2003 19:36:42 +0200 (MEST) Subject: [pypy-svn] rev 2041 - in pypy/trunk/src/pypy: interpreter objspace/flowtranslator translator/test Message-ID: <20031024173642.5EC4B5B152@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 24 19:36:34 2003 New Revision: 2041 Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: baseobjspace: newslice takes w_start, w_stop, and w_step, not w_end. flow/objspace: added newslice genpyrex: added op_newslice snippet: added half_of_n, testing slice test_pyrextrans: actual test. half of 10 is 5. but didn't we know that? :-) Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/baseobjspace.py (original) +++ pypy/trunk/src/pypy/interpreter/baseobjspace.py Fri Oct 24 19:36:34 2003 @@ -294,6 +294,6 @@ # newlist([w_1, w_2,...]) -> w_list # newstring([w_1, w_2,...]) -> w_string from ascii numbers (bytes) # newdict([(w_key,w_value),...]) -> w_dict -# newslice(w_start,w_stop,w_end) -> w_slice (w_end may be a real None) +#newslice(w_start,w_stop,w_step) -> w_slice (w_step may be a real None) # next(w_iter) -> w_value or raise NoValue # Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Fri Oct 24 19:36:34 2003 @@ -31,6 +31,9 @@ def newlist(self, args_w): return self.do_operation('newlist', *args_w) + def newslice(self, w_start, w_stop, w_step): + return self.do_operation('newslice', w_start, w_stop, w_step) + def wrap(self, obj): if isinstance(obj, W_Object): raise TypeError("already wrapped: " + repr(obj)) Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Fri Oct 24 19:36:34 2003 @@ -81,6 +81,10 @@ pairs.append("%s: %s, " % (self.argnames[i], self.argnames[i+1])) return "%s = {%s}" % (self.resultname, "".join(pairs)) + def op_newslice(self): + a = self.argnames + return "%s = slice(%s, %s, %s)" % (self.resultname, a[0], a[1], a[2]) + def op_call(self): a = self.argnames return "%s = %s(*%s, **%s)" % (self.resultname, a[0], a[1], a[2]) Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Fri Oct 24 19:36:34 2003 @@ -131,7 +131,7 @@ return total def time_waster(n): - "Arbitrary test function" + """Arbitrary test function""" i = 0 x = 1 while i Author: sanxiyn Date: Fri Oct 24 20:07:52 2003 New Revision: 2042 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: tweaks Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Fri Oct 24 20:07:52 2003 @@ -34,7 +34,7 @@ "lt": "<", "le": "<=", "eq": "=", - "getitem": "aref", + "getitem": "elt", } def op_binary(self, op): s = self.str @@ -50,12 +50,12 @@ def op_alloc_and_set(self): s = self.str result, (size, init) = self.result, self.args - print "(setq", s(result), "(make-array", s(size) - print ":initial-element", s(init), "))" + print "(setq", s(result), "(make-array", s(size), "))" + print "(fill", s(result), s(init), ")" def op_setitem(self): s = self.str (array, index, element) = self.args - print "(setf (aref", s(array), s(index), ")", s(element), ")" + print "(setf (elt", s(array), s(index), ")", s(element), ")" class GenCL: def __init__(self, fun): From hpk at codespeak.net Sat Oct 25 12:05:26 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 12:05:26 +0200 (MEST) Subject: [pypy-svn] rev 2047 - pypy/trunk/src/pypy/tool Message-ID: <20031025100526.6BF125A7E6@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 12:05:25 2003 New Revision: 2047 Modified: pypy/trunk/src/pypy/tool/fixeol Log: made it ignore non-versioned resources. Modified: pypy/trunk/src/pypy/tool/fixeol ============================================================================== --- pypy/trunk/src/pypy/tool/fixeol (original) +++ pypy/trunk/src/pypy/tool/fixeol Sat Oct 25 12:05:25 2003 @@ -49,12 +49,16 @@ def asserttextfile(fname): "Assert a file is a text file or issue a warning otherwise." # safety check to nail binary files - if not binary2text(fname): - print >> sys.stderr, "*** warning, looks like a binary file:", - print >> sys.stderr, fname - return - # change end-of-line style of each .py and .txt file to 'native' - os.system('svn propset svn:eol-style native %s' % fname) + try: + if not binary2text(fname): + print >> sys.stderr, "*** warning, looks like a binary file:", + print >> sys.stderr, fname + return + except IOError, e: + print "skipping %r because of %s" %(fname, e) + else: + # change end-of-line style of each .py and .txt file to 'native' + os.system('svn propset svn:eol-style native %s' % fname) def fixpyfiles(ignored, dirname, fnames): From hpk at codespeak.net Sat Oct 25 12:05:48 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 12:05:48 +0200 (MEST) Subject: [pypy-svn] rev 2048 - in pypy/trunk/src/pypy: objspace/flow translator Message-ID: <20031025100548.60CB25A7E6@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 12:05:47 2003 New Revision: 2048 Added: pypy/trunk/src/pypy/objspace/flow/model.py - copied, changed from rev 2046, pypy/trunk/src/pypy/translator/flowmodel.idea Removed: pypy/trunk/src/pypy/translator/flowmodel.idea Log: moved the rough model.py idea to its new place Copied: pypy/trunk/src/pypy/objspace/flow/model.py (from rev 2046, pypy/trunk/src/pypy/translator/flowmodel.idea) ============================================================================== --- pypy/trunk/src/pypy/translator/flowmodel.idea (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 12:05:47 2003 @@ -1,4 +1,8 @@ -basic discussion from 4th of october 2003 +# The model produced by the flowobjspace +# this is to be used by the translator mainly. +# +# the below object/attribute model evolved from +# a discussion in Berlin, 4th of october 2003 class FunctionGraph: startblock # Deleted: /pypy/trunk/src/pypy/translator/flowmodel.idea ============================================================================== --- /pypy/trunk/src/pypy/translator/flowmodel.idea Sat Oct 25 12:05:47 2003 +++ (empty file) @@ -1,35 +0,0 @@ -basic discussion from 4th of october 2003 - -class FunctionGraph: - startblock # - returnblock # - name # function name (possibly mangled already) - -class Link: - exitcase # Constant (or so) - args # mixed list of variable/const - target # block - -class Block: - input_args # mixed list of variable/const - operations # list of SpaceOperation(s) - exitswitch # variable - exits # list of Link(s) - -class ReturnBlock: - input_args # a single variable - operations = None # for uniformity - exits = () # ? - -class Variable: - name - -class Const: - value # a concrete value - -class SpaceOperation: - opname # operation name - args # mixed list of variables/Constants (can be mixed) - result # either Variable or Constant instance - - From hpk at codespeak.net Sat Oct 25 15:14:50 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 15:14:50 +0200 (MEST) Subject: [pypy-svn] rev 2049 - in pypy/trunk/src/pypy: interpreter objspace/flowobjspace/flow/test Message-ID: <20031025131450.D60DA5B216@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 15:14:49 2003 New Revision: 2049 Added: pypy/trunk/src/pypy/objspace/flow/framestate.py (contents, props changed) pypy/trunk/src/pypy/objspace/flow/test/test_framestate.py (contents, props changed) Modified: pypy/trunk/src/pypy/interpreter/pyframe.py pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/objspace/flow/model.py (contents, props changed) pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py Log: note: this commit will break all translators - a new flowmodel according to our discussions at the berlin sprint - a new class FrameState now encapsulates operations on the (mergeable) state of frames. - PyFrame no longer carries flowobjspace specific stuff Armin, Holger Modified: pypy/trunk/src/pypy/interpreter/pyframe.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/pyframe.py (original) +++ pypy/trunk/src/pypy/interpreter/pyframe.py Sat Oct 25 15:14:49 2003 @@ -94,33 +94,6 @@ if attr == 'f_code': return self.space.wrap(self.code) raise OperationError(self.space.w_AttributeError, w_attr) - ### cloning (for FlowObjSpace) ### - - def getflowstate(self): - mergeablestate = self.getfastscope() + self.valuestack.items - nonmergeablestate = ( - self.blockstack.items[:], - self.last_exception, - self.next_instr, - ) - return mergeablestate, nonmergeablestate - - def setflowstate(self, (mergeablestate, nonmergeablestate)): - self.setfastscope(mergeablestate[:len(self.fastlocals_w)]) - self.valuestack.items[:] = mergeablestate[len(self.fastlocals_w):] - ( - self.blockstack.items[:], - self.last_exception, - self.next_instr, - ) = nonmergeablestate - - def clone(self): - # Clone the frame, making a copy of the mutable state - cls = self.__class__ - f = cls(self.space, self.code, self.w_globals, self.getclosure()) - f.setflowstate(self.getflowstate()) - - ### Frame Blocks ### class FrameBlock: Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Sat Oct 25 15:14:49 2003 @@ -2,69 +2,29 @@ from pypy.interpreter.miscutils import Stack from pypy.interpreter.pyframe \ import ControlFlowException, ExitFrame, PyFrame -from pypy.objspace.flow.wrapper import W_Variable, W_Constant, UnwrapException -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * +from pypy.objspace.flow.framestate import FrameState -def constantsof(lst): - result = {} - for i in range(len(lst)): - if isinstance(lst[i], W_Constant): - result[i] = lst[i] - return result - -class SpamBlock(BasicBlock): +class SpamBlock(Block): dead = False - + def __init__(self, framestate): - mergeablestate, unmergeablestate = framestate - newstate = [] - inputargs = [] - for w in mergeablestate: - if isinstance(w, W_Variable): - w = W_Variable() # make fresh variables - inputargs.append(w) # collects all variables - newstate.append(w) - self.framestate = newstate, unmergeablestate - #import sys; print >> sys.stderr, "** creating SpamBlock", self.framestate - BasicBlock.__init__(self, inputargs, inputargs, [], None) + Block.__init__(self, framestate.getvariables()) + self.framestate = framestate def patchframe(self, frame, executioncontext): if self.dead: raise ExitFrame(None) - frame.setflowstate(self.framestate) + self.framestate.restoreframe(frame) executioncontext.crnt_block = self executioncontext.crnt_ops = self.operations - def union(self, other): - mergeablestate1, unmergeablestate1 = self.framestate - mergeablestate2, unmergeablestate2 = other.framestate -## XXX reintroduce me -## assert unmergeablestate1 == unmergeablestate2, ( -## "non mergeable states reached:\n%r\n%r" % ( -## unmergeablestate1, unmergeablestate2)) - assert len(mergeablestate1) == len(mergeablestate2), ( - "non mergeable states (different value stack depth)") - - newstate = [] - for w1, w2 in zip(mergeablestate1, mergeablestate2): - if w1 == w2 or isinstance(w1, W_Variable): - w = w1 - else: - w = W_Variable() - newstate.append(w) - if constantsof(newstate) == constantsof(mergeablestate1): - return self - elif constantsof(newstate) == constantsof(mergeablestate2): - return other - else: - return SpamBlock((newstate, unmergeablestate1)) -class EggBlock(BasicBlock): - has_renaming = False +class EggBlock(Block): - def __init__(self, prevblock, booloutcome): - BasicBlock.__init__(self, [], prevblock.locals, [], None) + def __init__(self, inputargs, prevblock, booloutcome): + Block.__init__(self, inputargs) self.prevblock = prevblock self.booloutcome = booloutcome @@ -110,19 +70,17 @@ self.w_globals = w_globals = space.wrap(globals) frame = code.create_frame(space, w_globals) formalargcount = code.getformalargcount() - dummy = W_Constant(None) + dummy = Constant(None) dummy.dummy = True - arg_list = ([W_Variable() for i in range(formalargcount)] + + arg_list = ([Variable() for i in range(formalargcount)] + [dummy] * (len(frame.fastlocals_w) - formalargcount)) frame.setfastscope(arg_list) self.joinpoints = {} for joinpoint in code.getjoinpoints(): self.joinpoints[joinpoint] = None - initialblock = SpamBlock(frame.getflowstate()) - # only keep arguments of the function in initialblock.input_args - del initialblock.input_args[formalargcount:] + initialblock = SpamBlock(FrameState(frame).copy()) self.pendingblocks = [initialblock] - self.graph = FunctionGraph(initialblock, code.co_name) + self.graph = FunctionGraph(code.co_name, initialblock) def bytecode_trace(self, frame): if isinstance(self.crnt_ops, ReplayList): @@ -130,44 +88,51 @@ next_instr = frame.next_instr if next_instr in self.joinpoints: block = self.joinpoints[next_instr] - currentframestate = frame.getflowstate() - newblock = SpamBlock(currentframestate) - if block is not None: - newblock = block.union(newblock) - finished = newblock is block - outputargs = [] - for w_output, w_target in zip(currentframestate[0], - newblock.framestate[0]): - if isinstance(w_target, W_Variable): - outputargs.append(w_output) - self.crnt_block.closeblock(Branch(outputargs, newblock)) + currentstate = FrameState(frame) + if block is None: + newstate = currentstate.copy() + finished = False + else: + # there is already a block for this bytecode position, + # we merge its state with the new (current) state. + newstate = block.framestate.union(currentstate) + finished = newstate == block.framestate + if finished: + newblock = block + else: + newblock = SpamBlock(newstate) + # unconditionally link the current block to the newblock + outputargs = currentstate.getoutputargs(newstate) + self.crnt_block.closeblock(Link(outputargs, newblock)) # phew if finished: raise ExitFrame(None) - if block is not None and isinstance(block.operations, tuple): - # patch the old block to point directly at the new block + if block is not None and block.exits: + # to simplify the graph, we patch the old block to point + # directly at the new block which is its generalization block.dead = True block.operations = () - outputargs = [] - for w_output, w_target in zip(block.framestate[0], - newblock.framestate[0]): - if isinstance(w_target, W_Variable): - outputargs.append(w_output) - block.branch = Branch(outputargs, newblock) + outputargs = block.framestate.getoutputargs(newstate) + block.exits = (Link(outputargs, newblock),) newblock.patchframe(frame, self) self.joinpoints[next_instr] = newblock def guessbool(self, w_condition): if not isinstance(self.crnt_ops, ReplayList): block = self.crnt_block - ifegg = EggBlock(block, True) - elseegg = EggBlock(block, False) - ifbranch = Branch([], ifegg) - elsebranch = Branch([], elseegg) - branch = ConditionalBranch(w_condition, ifbranch, elsebranch) - block.closeblock(branch) - self.pendingblocks.append(ifegg) - self.pendingblocks.append(elseegg) + vars = block.getvariables() + ifEgg = EggBlock(vars, block, True) + elseEgg = EggBlock(vars, block, False) + ifLink = Link(vars, ifEgg, True) + elseLink = Link(vars, elseEgg, False) + block.exitswitch = w_condition + block.closeblock(elseLink, ifLink) + # forked the graph. Note that elseLink comes before ifLink + # in the exits tuple so that (just in case we need it) we + # actually have block.exits[False] = elseLink and + # block.exits[True] = ifLink. + self.pendingblocks.append(ifEgg) + self.pendingblocks.append(elseEgg) raise ExitFrame(None) replaylist = self.crnt_ops assert replaylist.finished() @@ -185,4 +150,6 @@ continue # restarting a dead SpamBlock w_result = frame.eval(self) if w_result is not None: - self.crnt_block.closeblock(EndBranch(w_result)) + link = Link([w_result], self.graph.returnblock) + self.crnt_block.closeblock(link) + Added: pypy/trunk/src/pypy/objspace/flow/framestate.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/objspace/flow/framestate.py Sat Oct 25 15:14:49 2003 @@ -0,0 +1,94 @@ +from pypy.interpreter.pyframe import PyFrame +from pypy.objspace.flow.model import * + +class FrameState: + # XXX this class depends on the internal state of PyFrame objects + + def __init__(self, state): + if isinstance(state, PyFrame): + self.mergeable = state.getfastscope() + state.valuestack.items + self.nonmergeable = ( + state.blockstack.items[:], + state.last_exception, + state.next_instr, + ) + elif isinstance(state, tuple): + self.mergeable, self.nonmergeable = state + else: + raise TypeError("can't get framestate for %r" % + state.__class__.__name__) + + def restoreframe(self, frame): + if isinstance(frame, PyFrame): + fastlocals = len(frame.fastlocals_w) + frame.setfastscope(self.mergeable[:fastlocals]) + frame.valuestack.items[:] = self.mergeable[fastlocals:] + ( + frame.blockstack.items[:], + frame.last_exception, + frame.next_instr, + ) = self.nonmergeable + else: + raise TypeError("can't set framestate for %r" % + frame.__class__.__name__) + + def copy(self): + "Make a copy of this state in which all Variables are fresh." + newstate = [] + for w in self.mergeable: + if isinstance(w, Variable): + w = Variable() + newstate.append(w) + return FrameState((newstate, self.nonmergeable)) + + def getvariables(self): + return [w for w in self.mergeable if isinstance(w, Variable)] + + def __eq__(self, other): + """Two states are equal + if they only use different Variables at the same place""" + # safety check, don't try to compare states with different + # nonmergeable states + assert isinstance(other, FrameState) + assert len(self.mergeable) == len(other.mergeable) + # XXX assert self.nonmergeable == other.nonmergeable + # XXX this requires a proper __eq__ on the blockstack items + for w1, w2 in zip(self.mergeable, other.mergeable): + if not (w1 == w2 or (isinstance(w1, Variable) and + isinstance(w2, Variable))): + return False + return True + + def __ne__(self, other): + return not (self == other) + + def union(self, other): + """Compute a state that is at least as general as both self and other. + A state 'a' is more general than a state 'b' if all Variables in 'b' + are also Variables in 'a', but 'a' may have more Variables. + """ + newstate = [] + for w1, w2 in zip(self.mergeable, other.mergeable): + if isinstance(w1, Variable): + w = Variable() # new fresh Variable + elif isinstance(w1, Constant): + if w1 == w2: + w = w1 + else: + w = Variable() # generalize different constants + else: + raise TypeError('union of %r and %r' % (w1.__class__.__name__, + w2.__class__.__name__)) + newstate.append(w) + return FrameState((newstate, self.nonmergeable)) + + def getoutputargs(self, targetstate): + "Return the output arguments needed to link self to targetstate." + result = [] + for w_output, w_target in zip(self.mergeable, targetstate.mergeable): + if isinstance(w_target, Variable): + result.append(w_output) + elif not isinstance(w_target, Constant): + raise TypeError('output arg %r' % w_target.__class__.__name__) + return result + Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 15:14:49 2003 @@ -5,35 +5,76 @@ # a discussion in Berlin, 4th of october 2003 class FunctionGraph: - startblock # - returnblock # - name # function name (possibly mangled already) + def __init__(self, name, startblock, return_var=None): + self.name = name # function name (possibly mangled already) + self.startblock = startblock + # build default returnblock + self.returnblock = Block([return_var or Variable()]) + self.returnblock.operations = () + self.returnblock.exits = () class Link: - exitcase # Constant (or so) - args # mixed list of variable/const - target # block + def __init__(self, args, target, exitcase=None): + self.args = args # mixed list of var/const + self.target = target # block + self.exitcase = exitcase # this is a concrete value class Block: - input_args # mixed list of variable/const - operations # list of SpaceOperation(s) - exitswitch # variable - exits # list of Link(s) - -class ReturnBlock: - input_args # a single variable - operations = None # for uniformity - exits = () # ? -class Variable: - name + def __init__(self, inputargs): + self.inputargs = inputargs # mixed list of variable/const + self.operations = [] # list of SpaceOperation(s) + self.exitswitch = None # variable + self.exits = [] # list of Link(s) + + def getvariables(self): + "Return all variables mentionned in this Block." + result = self.inputargs[:] + for op in self.operations: + result += op.args + result.append(result) + return uniqueitems([w for w in result if isinstance(w, Variable)]) + + def closeblock(self, *exits): + assert self.exits == [], "block already closed" + self.exits = exits -class Const: - value # a concrete value +class Variable: + counter = 0 + def __init__(self, name=None): + if name is None: + name = 'v%d' % Variable.counter + Variable.counter += 1 + self.name = name + +class Constant: + def __init__(self, value): + self.value = value # a concrete value + def __eq__(self, other): + return isinstance(other, Constant) and self.value == other.value + def __ne__(self, other): + return not (self == other) class SpaceOperation: - opname # operation name - args # mixed list of variables/Constants (can be mixed) - result # either Variable or Constant instance - + def __init__(self, opname, args, result): + self.opname = opname # operation name + self.args = list(args) # mixed list of var/const + self.result = result # either Variable or Constant instance + def __eq__(self, other): + return (self.__class__ is other.__class__ and + self.opname == other.opname and + self.args == other.args and + self.result == other.result) + def __ne__(self, other): + return not (self == other) + +def uniqueitems(lst): + "Returns a list with duplicate elements removed." + result = [] + seen = {} + for item in lst: + if item not in seen: + result.append(item) + seen[item] = True + return result Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 25 15:14:49 2003 @@ -4,17 +4,20 @@ from pypy.interpreter.baseobjspace import ObjSpace, NoValue from pypy.interpreter.pycode import PyCode from pypy.interpreter.error import OperationError -from pypy.objspace.flow.wrapper import * -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * from pypy.objspace.flow import flowcontext debug = 0 + +class UnwrapException(Exception): + "Attempted to unwrap a Variable." + # ______________________________________________________________________ class FlowObjSpace(ObjSpace): def initialize(self): import __builtin__ - self.w_builtins = W_Constant(__builtin__.__dict__) - self.w_KeyError = W_Constant(KeyError) + self.w_builtins = Constant(__builtin__.__dict__) + self.w_KeyError = Constant(KeyError) #self.make_builtins() #self.make_sys() @@ -35,13 +38,15 @@ return self.do_operation('newslice', w_start, w_stop, w_step) def wrap(self, obj): - if isinstance(obj, W_Object): + if isinstance(obj, (Variable, Constant)): raise TypeError("already wrapped: " + repr(obj)) - return W_Constant(obj) + return Constant(obj) def unwrap(self, w_obj): - if isinstance(w_obj, W_Object): - return w_obj.unwrap() + if isinstance(w_obj, Variable): + raise UnwrapException + elif isinstance(w_obj, Constant): + return w_obj.value else: raise TypeError("not wrapped: " + repr(w_obj)) @@ -65,7 +70,7 @@ # ____________________________________________________________ def do_operation(self, name, *args_w): - spaceop = SpaceOperation(name, args_w, W_Variable()) + spaceop = SpaceOperation(name, args_w, Variable()) self.executioncontext.crnt_ops.append(spaceop) return spaceop.result @@ -81,10 +86,10 @@ def next(self, w_iter): w_tuple = self.do_operation("next_and_flag", w_iter) - w_flag = self.do_operation("getitem", w_tuple, W_Constant(1)) + w_flag = self.do_operation("getitem", w_tuple, Constant(1)) context = self.getexecutioncontext() if context.guessbool(w_flag): - return self.do_operation("getitem", w_tuple, W_Constant(0)) + return self.do_operation("getitem", w_tuple, Constant(0)) else: raise NoValue Added: pypy/trunk/src/pypy/objspace/flow/test/test_framestate.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/objspace/flow/test/test_framestate.py Sat Oct 25 15:14:49 2003 @@ -0,0 +1,109 @@ + +import autopath +from pypy.tool import test + +from pypy.objspace.flow.flowcontext import * +from pypy.objspace.flow.model import * +from pypy.interpreter.pycode import PyCode + +class TestFrameState(test.TestCase): + def setUp(self): + self.space = test.objspace('flow') + + def getframe(self, func): + space = self.space + try: + func = func.im_func + except AttributeError: + pass + code = func.func_code + code = PyCode()._from_code(code) + w_globals = Constant({}) # space.newdict([]) + frame = code.create_frame(space, w_globals) + + formalargcount = code.getformalargcount() + dummy = Constant(None) + #dummy.dummy = True + arg_list = ([Variable() for i in range(formalargcount)] + + [dummy] * (len(frame.fastlocals_w) - formalargcount)) + frame.setfastscope(arg_list) + return frame + + def func_simple(x): + spam = 5 + return spam + + def test_eq_framestate(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + fs2 = FrameState(frame) + self.assertEquals(fs1, fs2) + + def test_neq_hacked_framestate(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + frame.fastlocals_w[-1] = Variable() + fs2 = FrameState(frame) + self.assertNotEquals(fs1, fs2) + + def test_union_on_equal_framestates(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + fs2 = FrameState(frame) + self.assertEquals(fs1.union(fs2), fs1) + + def test_union_on_hacked_framestates(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + frame.fastlocals_w[-1] = Variable() + fs2 = FrameState(frame) + self.assertEquals(fs1.union(fs2), fs2) # fs2 is more general + self.assertEquals(fs2.union(fs1), fs2) # fs2 is more general + + def test_restore_frame(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + frame.fastlocals_w[-1] = Variable() + fs1.restoreframe(frame) + self.assertEquals(fs1, FrameState(frame)) + + def test_copy(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + fs2 = fs1.copy() + self.assertEquals(fs1, fs2) + + def test_getvariables(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + vars = fs1.getvariables() + self.assertEquals(len(vars), 1) + + def test_getoutputargs(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + frame.fastlocals_w[-1] = Variable() + fs2 = FrameState(frame) + outputargs = fs1.getoutputargs(fs2) + # 'x' -> 'x' is a Variable + # fastlocals_w[-1] -> fastlocals_w[-1] is Constant(None) + self.assertEquals(outputargs, [frame.fastlocals_w[0], Constant(None)]) + + def test_union_different_constants(self): + frame = self.getframe(self.func_simple) + fs1 = FrameState(frame) + frame.fastlocals_w[-1] = Constant(42) + fs2 = FrameState(frame) + fs3 = fs1.union(fs2) + fs3.restoreframe(frame) + self.assert_(isinstance(frame.fastlocals_w[-1], Variable)) # generalized + +if __name__ == '__main__': + test.main() + + + + + + + Modified: pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/test/test_objspace.py Sat Oct 25 15:14:49 2003 @@ -35,7 +35,9 @@ def test_nothing(self): x = self.codetest(self.nothing) - self.assertEquals(x.startblock.branch.__class__, EndBranch) + self.assertEquals(len(x.startblock.exits), 1) + link, = x.startblock.exits + self.assertEquals(link.target, x.returnblock) self.show(x) #__________________________________________________________ From hpk at codespeak.net Sat Oct 25 15:33:56 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 15:33:56 +0200 (MEST) Subject: [pypy-svn] rev 2050 - in pypy/trunk/src/pypy/translator: test tool Message-ID: <20031025133356.A4A695B233@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 15:33:55 2003 New Revision: 2050 Added: pypy/trunk/src/pypy/translator/tool/ (props changed) pypy/trunk/src/pypy/translator/tool/__init__.py (contents, props changed) pypy/trunk/src/pypy/translator/tool/benchmark.py (props changed) - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/benchmark.py pypy/trunk/src/pypy/translator/tool/buildcl.py (props changed) - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/buildcl.py pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py (props changed) - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/buildpyxmodule.py pypy/trunk/src/pypy/translator/tool/cmuclinvoke.sh - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh pypy/trunk/src/pypy/translator/tool/make_dot.py (props changed) - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/make_dot.py pypy/trunk/src/pypy/translator/tool/sbclinvoke.sh - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/sbclinvoke.sh pypy/trunk/src/pypy/translator/tool/stdoutcapture.py (props changed) - copied unchanged from rev 2048, pypy/trunk/src/pypy/translator/test/stdoutcapture.py Removed: pypy/trunk/src/pypy/translator/test/benchmark.py pypy/trunk/src/pypy/translator/test/buildcl.py pypy/trunk/src/pypy/translator/test/buildpyxmodule.py pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh pypy/trunk/src/pypy/translator/test/make_dot.py pypy/trunk/src/pypy/translator/test/sbclinvoke.sh pypy/trunk/src/pypy/translator/test/stdoutcapture.py Modified: pypy/trunk/src/pypy/translator/test/snippet.py (props changed) Log: moved all the utilities out of test into translator.tool for the time beeing (we need to refactor this all a bit more of course) Deleted: /pypy/trunk/src/pypy/translator/test/benchmark.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/benchmark.py Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,34 +0,0 @@ -import autopath -from pypy.tool import test -from pypy.tool.udir import udir -from pypy.translator.test.test_pyrextrans import make_cfunc -from pypy.translator.test.test_cltrans import global_cl, make_cl_func - -def benchmark(func): - try: - func = func.im_func - except AttributeError: - pass - c_func = make_cfunc(func) - if global_cl: - cl_func = make_cl_func(func) - print "generated c-func for", func.func_name - t1 = timeit(100, func) - t2 = timeit(100, c_func) - if global_cl: - t3 = timeit(100, cl_func) - print "cpython func ", t1, "seconds" - print "pypy/pyrex/cmodule ", t2, "seconds" - if global_cl: - print "cl (experimental) ", t3, "seconds", global_cl - -def timeit(num, func, *args): - from time import time as now - start = now() - for i in xrange(num): - func(*args) - return now()-start - -if __name__ == '__main__': - from pypy.translator.test.snippet import sieve_of_eratosthenes - benchmark(sieve_of_eratosthenes) Deleted: /pypy/trunk/src/pypy/translator/test/buildcl.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/buildcl.py Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,38 +0,0 @@ -import autopath - -import sys -from cStringIO import StringIO -from pypy.objspace.flow import FlowObjSpace -from pypy.translator.gencl import GenCL -from vpath.adapter.process import exec_cmd - -def readlisp(s): - # Return bool and int only - s = s.strip() - if s == "T": - return True - elif s == "NIL": - return False - else: - return int(s) - -def _make_cl_func(func, cl, path): - fun = FlowObjSpace().build_flow(func) - gen = GenCL(fun) - out = gen.emitcode() - i = 1 - fpath = path.join("test%d.lisp" % i) - while fpath.exists(): - fpath = path.join("test%d.lisp" % i) - i += 1 - def _(*args): - fpath.write(out) - fp = file(str(fpath), "a") - print >>fp, "(write (", fun.functionname, - for arg in args: - print >>fp, gen.conv(arg), - print >>fp, "))" - fp.close() - output = exec_cmd("%s %s" % (cl, str(fpath))) - return readlisp(output) - return _ Deleted: /pypy/trunk/src/pypy/translator/test/buildpyxmodule.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/buildpyxmodule.py Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,84 +0,0 @@ - -import autopath -from pypy.tool import test - -from vpath.local import Path -import os, sys -import stdoutcapture - -debug = 0 - -def make_module_from_pyxstring(name, dirpath, string): - pyxfile = dirpath.join('%s.pyx' % name) - i = 0 - while pyxfile.exists(): - pyxfile = pyxfile.newbasename('%s%d.pyx' % (name, i)) - pyxfile.write(string) - if debug: print "made pyxfile", pyxfile - make_c_from_pyxfile(pyxfile) - module = make_module_from_c(pyxfile) - #print "made module", module - return module - -def make_module_from_c(pyxfile): - from distutils.core import setup - from distutils.extension import Extension - from Pyrex.Distutils import build_ext - - #try: - # from distutils.log import set_threshold - # set_threshold(10000) - #except ImportError: - # print "ERROR IMPORTING" - # pass - - dirpath = pyxfile.dirname() - lastdir = Path() - os.chdir(str(dirpath)) - try: - modname = pyxfile.purebasename() - if debug: print "modname", modname - c = stdoutcapture.Capture(mixed_out_err = True) - try: - try: - setup( - name = "testmodules", - ext_modules=[ - Extension(modname, [str(pyxfile)]) - ], - cmdclass = {'build_ext': build_ext}, - script_name = 'setup.py', - script_args = ['-q', 'build_ext', '--inplace'] - #script_args = ['build_ext', '--inplace'] - ) - finally: - foutput, foutput = c.done() - except: - print foutput.read() - raise - # XXX do we need to do some check on fout/ferr? - # XXX not a nice way to import a module - if debug: print "inserting path to sys.path", dirpath - sys.path.insert(0, '.') - if debug: print "import %(modname)s as testmodule" % locals() - exec "import %(modname)s as testmodule" % locals() - sys.path.pop(0) - finally: - os.chdir(str(lastdir)) - #if not debug: - #dirpath.rmtree() - return testmodule - -def make_c_from_pyxfile(pyxfile): - from Pyrex.Compiler.Main import CompilationOptions, Context, PyrexError - try: - options = CompilationOptions(show_version = 0, - use_listing_file = 0, - output_file = None) - context = Context(options.include_path) - result = context.compile(str(pyxfile), options, c_only = 1) - if result.num_errors > 0: - raise ValueError, "failure %s" % result - except PyrexError, e: - print >>sys.stderr, e - cfile = pyxfile.newext('.c') Deleted: /pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh ============================================================================== --- /pypy/trunk/src/pypy/translator/test/cmuclinvoke.sh Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,4 +0,0 @@ -#!/bin/sh -# Copy this to your PATH -lisp -batch -eval "(compile-file \"$1\")(quit)" >/dev/null 2>&1 -lisp -batch -quiet -eval "(load (compile-file-pathname \"$1\"))(quit)" Deleted: /pypy/trunk/src/pypy/translator/test/make_dot.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/make_dot.py Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,234 +0,0 @@ -from __future__ import generators - -""" -""" - -import autopath -from pypy.translator.flowmodel import * -import os - -debug = 0 - - -counters = {} -class Node: - allnodes = [] - def __init__(self, obj): - self.obj = obj - self.allnodes.append(self) - self.edges = [] - self.make_name() - self.data = [] - - def make_name(self): - cls = type(self) - num = counters.setdefault(cls, 0) - counters[cls] += 1 - self.name = '%s%d' % (self.__class__.__name__, num) - - def addedge(self, othernode, name=None): - """ append edge (if not already in the list) - return true if it really was added - """ - if othernode not in self.edges: - self.edges.append((othernode, name)) - return 1 - - def descr_edges(self): - l = [] - style = self.linestyle() - for node,name in self.edges: - if node in self.allnodes: - if name == 'prevblock': - l.append('edge [style=dotted, weight=0, label="%s"]; %s -> %s;' % (name, self, node)) - else: - l.append('edge [style=%s, label="%s"]; %s -> %s;' % (style, name, self, node)) - else: - pass - return "\n".join(l) - - def linestyle(self): - return "solid" - - def get_data(self): - l = self.data[:] - l.insert(0, "%s" % self.obj.__class__.__name__) - return "\\n".join(l) - - def __str__(self): - return self.name - -class NodeFunctionGraph(Node): - def descr_node(self): - """ obj attrs startblock, functionname """ - name = self.name - data = self.get_data() - return '%(name)s [shape=box, label="%(data)s"];' % locals() - - def make_name(self): - self.name = self.obj.functionname - -class NodeBasicBlock(Node): - def descr_node(self): - """ condition, ifbranch, elsebranch """ - name = self.name - data = self.get_data() - #content = "\\n".join([name] + map(repr,self.obj.operations)) + "\\n"+data - return '%(name)s [shape=box, label="%(data)s"];' % locals() - -class NodeBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=diamond, label="%(data)s"];' % locals() - -class NodeConditionalBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=diamond, label="%(data)s"];' % locals() - - def linestyle(self): - return 'dashed' - -class NodeEndBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=circle, label="%(data)s"];' % locals() - -def flatten(*args): - for arg in args: - try: - for atom in apply(flatten,arg): - yield atom - except: yield arg - - -class DotGen: - def __init__(self): - self.nodes = {} - self.counters = {} - - def get_source(self, fun): - self.traverse(fun) - l = [] - for node in self.nodes.values(): - if hasattr(node, 'source'): - l.insert(0, node.descr_node()) - l.insert(0, node.descr_edges()) - else: - l.append(node.descr_node()) - l.append(node.descr_edges()) - - content = "\n".join(l) - - return """ -digraph test { -node [fontname=Times]; -edge [fontname=Times]; -%(content)s -}""" % locals() - - def get_node_class(self, cls): - g = globals() - #print cls.__name__ - nodeclass = g.get('Node%s' % cls.__name__, None) - if nodeclass: - return nodeclass - - for base in cls.__bases__: - nodeclass = self.get_node_class(base) - if nodeclass: - return nodeclass - - def makenode(self, obj): - try: - return self.nodes[obj] - except KeyError: - pass - if not hasattr(obj, '__class__'): - return - cls = self.get_node_class(obj.__class__) - if cls is not None: - node = cls(obj) - self.nodes[obj] = node - return node - - def traverse(self, obj, objname=None): - try: - return self.nodes[obj] - except KeyError: - pass - except TypeError: - return - node = self.makenode(obj) - if node: - self.nodes[obj] = node - for name, attr in obj.__dict__.items(): - ##XXX it makes the graph not very readeable - if name == "framestate": - continue - trynode = self.traverse(attr, name) - if trynode: - node.addedge(trynode, name) - else: - if name == 'source' and type(attr) is str: - attr = "\\l".join(attr.split('\n')) - node.data.append('\\l%s' % attr.replace('"', '\\"')) - else: - node.data.append("%s=%s" % (name, repr(attr).replace('"', '\\"'))) - #print "unknown attribute", name, item - return node - elif debug: - print "unknown obj", obj - -def make_dot(fun, udir, target='ps'): - dotgen = DotGen() - - name = fun.functionname - - from vpath.local import Path - from vpath.adapter.process import exec_cmd - dest = udir.join('%s.dot' % name) - dest.write(dotgen.get_source(fun)) - psdest = dest.newext(target) - out = exec_cmd('dot -T%s %s' % (target, str(dest))) - psdest.write(out) - #print "wrote", psdest - return psdest - -if __name__ == '__main__': - i = Variable("i") - sum = Variable("sum") - - conditionres = Variable("conditionres") - conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) - decop = SpaceOperation("add", [i, Constant(-1)], i) - addop = SpaceOperation("add", [i, sum], sum) - - conditionbranch = ConditionalBranch() - headerbranch = Branch() - headerbranch2 = Branch() - whileblock = BasicBlock([i, sum], [i, sum], [addop, decop], headerbranch2) - whilebranch = Branch([i, sum], whileblock) - - endbranch = EndBranch(sum) - conditionbranch.set(conditionres, whilebranch, endbranch) - - headerblock = BasicBlock([i, sum], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i, Constant(0)], headerblock) - headerbranch2.set([i, sum], headerblock) - startblock = BasicBlock([i], [i, sum], - [], headerbranch) - - startblock.prevblock = headerblock - - fun = FunctionGraph(startblock, "f") - - make_png(fun) Deleted: /pypy/trunk/src/pypy/translator/test/sbclinvoke.sh ============================================================================== --- /pypy/trunk/src/pypy/translator/test/sbclinvoke.sh Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,3 +0,0 @@ -#!/bin/sh -# Copy this to your PATH -sbcl --noinform --disable-debugger --load $1 --eval '(quit)' Deleted: /pypy/trunk/src/pypy/translator/test/stdoutcapture.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/stdoutcapture.py Sat Oct 25 15:33:55 2003 +++ (empty file) @@ -1,73 +0,0 @@ -""" -A quick hack to capture stdout/stderr. -""" - -import os, sys - - -class Capture: - - def __init__(self, mixed_out_err = False): - "Start capture of the Unix-level stdout and stderr." - if (not hasattr(os, 'tmpfile') or - not hasattr(os, 'dup') or - not hasattr(os, 'dup2') or - not hasattr(os, 'fdopen')): - self.dummy = 1 - else: - self.dummy = 0 - # make new stdout/stderr files if needed - self.localoutfd = os.dup(1) - self.localerrfd = os.dup(2) - if sys.stdout.fileno() == 1: - self.saved_stdout = sys.stdout - sys.stdout = os.fdopen(self.localoutfd, 'w', 1) - else: - self.saved_stdout = None - if sys.stderr.fileno() == 2: - self.saved_stderr = sys.stderr - sys.stderr = os.fdopen(self.localerrfd, 'w', 0) - else: - self.saved_stderr = None - self.tmpout = os.tmpfile() - if mixed_out_err: - self.tmperr = self.tmpout - else: - self.tmperr = os.tmpfile() - os.dup2(self.tmpout.fileno(), 1) - os.dup2(self.tmperr.fileno(), 2) - - def done(self): - "End capture and return the captured text (stdoutfile, stderrfile)." - if self.dummy: - import cStringIO - return cStringIO.StringIO(), cStringIO.StringIO() - else: - os.dup2(self.localoutfd, 1) - os.dup2(self.localerrfd, 2) - if self.saved_stdout is not None: - f = sys.stdout - sys.stdout = self.saved_stdout - f.close() - else: - os.close(self.localoutfd) - if self.saved_stderr is not None: - f = sys.stderr - sys.stderr = self.saved_stderr - f.close() - else: - os.close(self.localerrfd) - self.tmpout.seek(0) - self.tmperr.seek(0) - return self.tmpout, self.tmperr - - -if __name__ == '__main__': - # test - c = Capture() - try: - os.system('echo hello') - finally: - fout, ferr = c.done() - print 'Output:', `fout.read()` - print 'Error:', `ferr.read()` Added: pypy/trunk/src/pypy/translator/tool/__init__.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/translator/tool/__init__.py Sat Oct 25 15:33:55 2003 @@ -0,0 +1 @@ +# empty From arigo at codespeak.net Sat Oct 25 17:31:48 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 17:31:48 +0200 (MEST) Subject: [pypy-svn] rev 2051 - in pypy/trunk/src/pypy: objspace/flow translator translator/test Message-ID: <20031025153148.3484A5B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 17:31:47 2003 New Revision: 2051 Removed: pypy/trunk/src/pypy/translator/flowmodel.py Modified: pypy/trunk/src/pypy/objspace/flow/model.py pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/annset.py pypy/trunk/src/pypy/translator/test/test_annotation.py pypy/trunk/src/pypy/translator/test/test_annset.py Log: Fixed the annotator code to work with the new flow model Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 17:31:47 2003 @@ -12,9 +12,12 @@ self.returnblock = Block([return_var or Variable()]) self.returnblock.operations = () self.returnblock.exits = () + def getargs(self): + return self.startblock.inputargs class Link: def __init__(self, args, target, exitcase=None): + assert len(args) == len(target.inputargs), "output args mismatch" self.args = args # mixed list of var/const self.target = target # block self.exitcase = exitcase # this is a concrete value Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Sat Oct 25 17:31:47 2003 @@ -1,7 +1,7 @@ from __future__ import generators -from pypy.translator.flowmodel import * -from pypy.translator.annset import AnnotationSet, Cell +from pypy.translator.annset import AnnotationSet, Cell, deref +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation #class GraphGlobalVariable(Variable): # pass @@ -14,18 +14,17 @@ def build_types(self, input_arg_types): input_ann = AnnotationSet() - for arg, arg_type in zip(self.flowgraph.get_args(), input_arg_types): + for arg, arg_type in zip(self.flowgraph.getargs(), input_arg_types): input_ann.set_type(arg, arg_type) self.build_annotations(input_ann) def build_annotations(self,input_annotations): self.annotated = {} - self.endblock = BasicBlock([Variable('_return_value')], [], [], None) self.flowin(self.flowgraph.startblock,input_annotations) def get_return_value(self): "Return the return_value variable." - return self.endblock.input_args[0] + return self.flowgraph.returnblock.inputargs[0] def get_variables_ann(self): """Return a dict {Variable(): AnnotationSet()} mapping each variable @@ -36,8 +35,8 @@ # This has to be fixed anyway. result = {} for block, ann in self.annotated.items(): - for v in block.getlocals(): - #assert v not in result -- XXX currently false + for v in block.getvariables(): + #XXX assert v not in result, "Variables must not be shared" result[v] = ann return result @@ -57,7 +56,7 @@ if not ann.match(SpaceOperation('getitem', [ w_varargs, Constant(i)], c)): break - args_w.append(c.get()) + args_w.append(deref(c)) else: op = SpaceOperation('simple_call', args_w, op.result) # XXX check that w_kwargs is empty @@ -88,8 +87,9 @@ # assert monotonic decrease assert (oldlen is None or len(blockannotations) <= oldlen), ( block, oldlen, blockannotations) - if len(blockannotations) != oldlen and block is not self.endblock: - self.flownext(block.branch,block) + if len(blockannotations) != oldlen: + for link in block.exits: + self.flownext(link,block) def consider_op(self,op,annotations): consider_meth = getattr(self,'consider_op_'+op.opname,None) @@ -136,33 +136,19 @@ elif isinstance(const.value, tuple): pass # XXX say something about the elements - def flownext(self,branch,curblock): - getattr(self,'flownext_'+branch.__class__.__name__)(branch,curblock) - - def flownext_Branch(self,branch,curblock): - if branch.target.has_renaming: - renaming = {} - newannotations = AnnotationSet() - - for w_from,w_to in zip(branch.args,branch.target.input_args): - if isinstance(w_from,Variable): - renaming.setdefault(w_from, []).append(w_to) - else: - self.consider_const(w_to,w_from,newannotations) - - #import sys; print >> sys.stderr, self.annotated[curblock] - #import sys; print >> sys.stderr, renaming - for ann in self.annotated[curblock].enumerate(renaming): - newannotations.add(ann) - #import sys; print >> sys.stderr, newannotations - else: - newannotations = self.annotated[curblock].copy() - self.flowin(branch.target,newannotations) - - def flownext_ConditionalBranch(self,branch,curblock): - self.flownext(branch.ifbranch,curblock) - self.flownext(branch.elsebranch,curblock) - - def flownext_EndBranch(self,branch,curblock): - branch = Branch([branch.returnvalue], self.endblock) - self.flownext_Branch(branch,curblock) + def flownext(self,link,curblock): + renaming = {} + newannotations = AnnotationSet() + + for w_from,w_to in zip(link.args,link.target.inputargs): + if isinstance(w_from,Variable): + renaming.setdefault(w_from, []).append(w_to) + else: + self.consider_const(w_to,w_from,newannotations) + + #import sys; print >> sys.stderr, self.annotated[curblock] + #import sys; print >> sys.stderr, renaming + for ann in self.annotated[curblock].enumerate(renaming): + newannotations.add(ann) + #import sys; print >> sys.stderr, newannotations + self.flowin(link.target,newannotations) Modified: pypy/trunk/src/pypy/translator/annset.py ============================================================================== --- pypy/trunk/src/pypy/translator/annset.py (original) +++ pypy/trunk/src/pypy/translator/annset.py Sat Oct 25 17:31:47 2003 @@ -1,6 +1,6 @@ from __future__ import generators import weakref -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation class Cell: @@ -50,13 +50,6 @@ self.shared = [weakref.ref(self)] return self.shared - def get(self): - "Return the content of the Cell, or the Cell itself if empty." - if self.content is None: - return self - else: - return self.content - def set(self, content): if isinstance(content, Cell): self.share(content) @@ -217,14 +210,22 @@ annotations have the same functor.""" pairs = zip(ann1.args + [ann1.result], ann2.args + [ann2.result]) for a1, a2 in pairs: - v1 = a1.get() + v1 = deref(a1) if not isinstance(v1, Cell): - v2 = a2.get() + v2 = deref(a2) if not isinstance(v2, Cell) and v2 != v1: return False # match! Set the Cells of ann1... for a1, a2 in pairs: - v1 = a1.get() + v1 = deref(a1) if isinstance(v1, Cell): v1.set(a2) return True + +def deref(x): + """If x is a Cell, return the content of the Cell, + or the Cell itself if empty. For other x, return x.""" + if isinstance(x, Cell) and x.content is not None: + return x.content + else: + return x Deleted: /pypy/trunk/src/pypy/translator/flowmodel.py ============================================================================== --- /pypy/trunk/src/pypy/translator/flowmodel.py Sat Oct 25 17:31:47 2003 +++ (empty file) @@ -1,165 +0,0 @@ -""" -the objectmodel on which the FlowObjSpace and the translator -interoperate. While the FlowObjSpace may (and does) use subclasses -of the classes in this module the translator parts will only look -into the attributes defined here. -""" -class FlowNode: - def getedges(self): - """ return all edges of this node """ - raise NotImplementedError, "Abstract base class" - - def flatten(self): - """ return a list of all nodes reachable from this node """ - nodedict = self.visit(lambda x: None) - return nodedict.keys() - - def visit(self, fn, _visited = None): - """ let the function 'fn' visit the subgraph of this node """ - if _visited is None: - _visited = {} - _visited[self] = fn(self) - for targetnode in self.getedges(): - if not _visited.has_key(targetnode): - targetnode.visit(fn, _visited) - return _visited - -class BasicBlock(FlowNode): - has_renaming = True - - def __init__(self, input_args, locals, operations, branch=None): - self.input_args = input_args - self.locals = locals - self.operations = operations - self.branch = branch - - def getedges(self): - return [self.branch] - - def replace_branch(self, one, another): - assert self.branch is one - self.branch = another - - def closeblock(self, branch): - self.operations = tuple(self.operations) # should no longer change - self.branch = branch - - def getlocals(self): - locals = {} - for arg in self.input_args: - locals[arg] = True - for op in self.operations: - for arg in op.args: - if isinstance(arg, Variable): - locals[arg] = True - if isinstance(op.result, Variable): - locals[op.result] = True - return locals - -class Variable: - def __init__(self, pseudoname): - self.pseudoname = pseudoname - - def __repr__(self): - return "<%s>" % self.pseudoname - - def get(self): - return self - -class Constant: - def __init__(self, value): - self.value = value - - def __eq__(self, other): - return isinstance(other, Constant) and self.value == other.value - - def __ne__(self, other): - return not (self == other) - - def __hash__(self): - return hash(self.value) - - def __repr__(self): - return str(self.value) - - def get(self): - return self - -class SpaceOperation: - def __init__(self, opname, args, result): - self.opname = opname - self.args = args # list of variables - self.result = result # - - def __eq__(self, other): - return (self.__class__ is other.__class__ and - self.opname == other.opname and - self.args == other.args and - self.result == other.result) - - def __ne__(self, other): - return not (self == other) - - def __hash__(self): - return hash((self.opname,tuple(self.args),self.result)) - - def __repr__(self): - return "%s <- %s(%s)" % (self.result, self.opname, ", ".join(map(str, self.args))) - -class Branch(FlowNode): - def __init__(self, args=None, target=None): - self.set(args, target) - - def getedges(self): - return [self.target] - - def set(self, args, target): - self.args = args # list of variables - self.target = target # basic block instance - -class ConditionalBranch(FlowNode): - def __init__(self, condition=None, ifbranch=None, elsebranch=None): - self.set(condition, ifbranch, elsebranch) - - def getedges(self): - return [self.ifbranch, self.elsebranch] - - def set(self, condition, ifbranch, elsebranch): - self.condition = condition - self.ifbranch = ifbranch - self.elsebranch = elsebranch - - def replace_branch(self, one, another): - assert self.ifbranch is not self.elsebranch, "please enhance flowobjspace" - if one is self.ifbranch: - self.ifbranch = another - elif one is self.elsebranch: - self.elsebranch = another - else: - raise ValueError, "Don't have this branch %r" % one - -class EndBranch(FlowNode): - def __init__(self, returnvalue): - self.returnvalue = returnvalue - - def getedges(self): - return [] - -class FunctionGraph: - def __init__(self, startblock, functionname): - self.startblock = startblock - self.functionname = functionname - - def get_args(self): - return self.startblock.input_args - - def flatten(self): - return self.startblock.flatten() - - def mkentrymap(self): - """Create a map from nodes in the graph to back edge lists""" - entrymap = { self.startblock: [self]} - for node in self.flatten(): - for edge in node.getedges(): - entrymap.setdefault(edge, []).append(node) - return entrymap Modified: pypy/trunk/src/pypy/translator/test/test_annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_annotation.py (original) +++ pypy/trunk/src/pypy/translator/test/test_annotation.py Sat Oct 25 17:31:47 2003 @@ -4,7 +4,7 @@ from pypy.tool.udir import udir from pypy.translator.annotation import Annotator -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * class AnnonateTestCase(test.IntTestCase): def setUp(self): @@ -38,11 +38,10 @@ x = Variable("x") result = Variable("result") op = SpaceOperation("add", [x, Constant(1)], result) - endbranch = EndBranch(result) - block = BasicBlock([x], [x], - [op], - endbranch) - fun = FunctionGraph(block, "f") + block = Block([x]) + fun = FunctionGraph("f", block) + block.operations.append(op) + block.closeblock(Link([result], fun.returnblock)) a = Annotator(fun) a.build_types([int]) end_var = a.get_return_value() @@ -61,23 +60,16 @@ conditionres = Variable("conditionres") conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) decop = SpaceOperation("add", [i, Constant(-1)], i) + headerblock = Block([i]) + whileblock = Block([i]) - conditionbranch = ConditionalBranch() - headerbranch = Branch() - whileblock = BasicBlock([i], [i], [decop], headerbranch) - whilebranch = Branch([i], whileblock) - endbranch = EndBranch(i) - conditionbranch.set(conditionres, whilebranch, endbranch) - - headerblock = BasicBlock([i], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i], headerblock) - - startblock = BasicBlock([i], [i], - [], headerbranch) - - fun = FunctionGraph(startblock, "f") + fun = FunctionGraph("f", headerblock) + headerblock.operations.append(conditionop) + headerblock.exitswitch = conditionres + headerblock.closeblock(Link([i], fun.returnblock, False), + Link([i], whileblock, True)) + whileblock.operations.append(decop) + whileblock.closeblock(Link([i], headerblock)) a = Annotator(fun) a.build_types([int]) @@ -102,25 +94,19 @@ conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) decop = SpaceOperation("add", [i, Constant(-1)], i) addop = SpaceOperation("add", [i, sum], sum) - - conditionbranch = ConditionalBranch() - headerbranch = Branch() - headerbranch2 = Branch() - whileblock = BasicBlock([i, sum], [i, sum], [addop, decop], headerbranch2) - whilebranch = Branch([i, sum], whileblock) - - endbranch = EndBranch(sum) - conditionbranch.set(conditionres, whilebranch, endbranch) - - headerblock = BasicBlock([i, sum], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i, Constant(0)], headerblock) - headerbranch2.set([i, sum], headerblock) - startblock = BasicBlock([i], [i, sum], - [], headerbranch) - - fun = FunctionGraph(startblock, "f") + startblock = Block([i]) + headerblock = Block([i, sum]) + whileblock = Block([i, sum]) + + fun = FunctionGraph("f", startblock) + startblock.closeblock(Link([i, Constant(0)], headerblock)) + headerblock.operations.append(conditionop) + headerblock.exitswitch = conditionres + headerblock.closeblock(Link([sum], fun.returnblock, False), + Link([i, sum], whileblock, True)) + whileblock.operations.append(addop) + whileblock.operations.append(decop) + whileblock.closeblock(Link([i, sum], headerblock)) a = Annotator(fun) #import sys; print >> sys.stderr, a.build_annotations(input_ann) Modified: pypy/trunk/src/pypy/translator/test/test_annset.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_annset.py (original) +++ pypy/trunk/src/pypy/translator/test/test_annset.py Sat Oct 25 17:31:47 2003 @@ -3,7 +3,7 @@ from pypy.tool import test from pypy.translator.annset import Cell, AnnotationSet -from pypy.translator.flowmodel import Variable, Constant, SpaceOperation +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation class TestCell(test.IntTestCase): @@ -12,11 +12,11 @@ c1 = Cell() v1 = Variable('v1') c1.set(v1) - self.assertEquals(c1.get(), v1) + self.assertEquals(c1.content, v1) c2 = Cell() k2 = Constant(123) c2.set(k2) - self.assertEquals(c2.get(), k2) + self.assertEquals(c2.content, k2) self.assertRaises(ValueError, c1.set, k2) self.assertRaises(ValueError, c2.set, v1) self.assertRaises(ValueError, c1.set, c2) @@ -28,8 +28,8 @@ c2 = Cell() c1.share(c2) c2.set(k1) - self.assertEquals(c1.get(), k1) - self.assertEquals(c2.get(), k1) + self.assertEquals(c1.content, k1) + self.assertEquals(c2.content, k1) def test_share2(self): k1 = Constant(-123) @@ -37,8 +37,8 @@ c2 = Cell() c2.set(k1) c1.share(c2) - self.assertEquals(c1.get(), k1) - self.assertEquals(c2.get(), k1) + self.assertEquals(c1.content, k1) + self.assertEquals(c2.content, k1) def test_share3(self): k1 = Constant(-123) @@ -46,8 +46,8 @@ c2 = Cell() c1.share(c2) c1.set(k1) - self.assertEquals(c1.get(), k1) - self.assertEquals(c2.get(), k1) + self.assertEquals(c1.content, k1) + self.assertEquals(c2.content, k1) def test_share3(self): k1 = Constant(-123) @@ -55,8 +55,8 @@ c2 = Cell() c1.set(k1) c1.share(c2) - self.assertEquals(c1.get(), k1) - self.assertEquals(c2.get(), k1) + self.assertEquals(c1.content, k1) + self.assertEquals(c2.content, k1) def test_is_shared(self): c1 = Cell() @@ -157,15 +157,15 @@ self.assert_(a.match(ann)) c = Cell() self.assert_(a.match(SpaceOperation('add', [self.v1, self.k4], c))) - self.assertEquals(c.get(), self.v2) + self.assertEquals(c.content, self.v2) c = Cell() c2 = Cell() self.assert_(a.match(SpaceOperation('add', [self.v1, c], c2))) - self.assertEquals(c.get(), self.k1) - self.assertEquals(c2.get(), self.v2) + self.assertEquals(c.content, self.k1) + self.assertEquals(c2.content, self.v2) c = Cell() self.assert_(a.match(SpaceOperation('neg', [c], self.v3))) - self.assertEquals(c.get(), self.v2) + self.assertEquals(c.content, self.v2) c = Cell() self.failIf(a.match(SpaceOperation('add', [self.v2, self.k1], self.v2))) self.failIf(a.match(SpaceOperation('add', [self.v2, self.k1], c))) @@ -184,7 +184,7 @@ self.assert_(a.match(SpaceOperation('add', [self.v1, self.k1], self.v2))) c = Cell() self.assert_(a.match(SpaceOperation('add', [self.v1, self.k1], c))) - self.assertEquals(c.get(), self.v2) + self.assertEquals(c.content, self.v2) c = Cell() self.assert_(a.match(SpaceOperation('neg', [self.v2], c))) self.assert_(c.is_shared(c4)) @@ -192,10 +192,10 @@ self.assert_(not c.is_shared(c2)) self.assert_(not c.is_shared(c1)) - self.assertEquals(c1.get(), self.k1) - self.assertEquals(c2.get(), None) - self.assertEquals(c3.get(), None) - self.assertEquals(c4.get(), None) + self.assertEquals(c1.content, self.k1) + self.assertEquals(c2.content, None) + self.assertEquals(c3.content, None) + self.assertEquals(c4.content, None) def test_enumerate(self): lst = [SpaceOperation('add', [self.v1, self.k1], self.v2), From arigo at codespeak.net Sat Oct 25 18:03:21 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 18:03:21 +0200 (MEST) Subject: [pypy-svn] rev 2052 - in pypy/trunk/src/pypy: objspace/flow translator Message-ID: <20031025160321.ED19E5B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 18:03:21 2003 New Revision: 2052 Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/annotation.py Log: The flow space now emits an explicit 'is_true' operation. Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 25 18:03:21 2003 @@ -81,8 +81,9 @@ pass else: return bool(obj) + w_truthvalue = self.do_operation('is_true', w_obj) context = self.getexecutioncontext() - return context.guessbool(w_obj) + return context.guessbool(w_truthvalue) def next(self, w_iter): w_tuple = self.do_operation("next_and_flag", w_iter) Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Sat Oct 25 18:03:21 2003 @@ -107,9 +107,11 @@ consider_op_and_ = consider_op_add # don't forget the trailing '_' # XXX add more - def consider_op_not_(self, op, annotations): + def consider_op_is_true(self, op, annotations): annotations.set_type(op.result, bool) + consider_op_not_ = consider_op_is_true + def consider_op_lt(self, op, annotations): annotations.set_type(op.result, bool) From arigo at codespeak.net Sat Oct 25 18:22:46 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 18:22:46 +0200 (MEST) Subject: [pypy-svn] rev 2053 - in pypy/trunk/src/pypy: objspace/flow translator translator/test Message-ID: <20031025162246.2F1C85B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 18:22:45 2003 New Revision: 2053 Modified: pypy/trunk/src/pypy/objspace/flow/model.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: M objspace/flow/model.py stupid bug fix M translator/test/test_typedpyrex.py M translator/test/test_pyrextrans.py these tests now pass again M translator/simplify.py made this module importable, not fixed M translator/genpyrex.py fixed Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 18:22:45 2003 @@ -35,7 +35,7 @@ result = self.inputargs[:] for op in self.operations: result += op.args - result.append(result) + result.append(op.result) return uniqueitems([w for w in result if isinstance(w, Variable)]) def closeblock(self, *exits): @@ -49,6 +49,8 @@ name = 'v%d' % Variable.counter Variable.counter += 1 self.name = name + def __repr__(self): + return '<%s>' % self.name class Constant: def __init__(self, value): @@ -57,6 +59,10 @@ return isinstance(other, Constant) and self.value == other.value def __ne__(self, other): return not (self == other) + def __hash__(self): + return hash(self.value) + def __repr__(self): + return '<%r>' % (self.value,) class SpaceOperation: def __init__(self, opname, args, result): @@ -70,6 +76,10 @@ self.result == other.result) def __ne__(self, other): return not (self == other) + def __hash__(self): + return hash((self.opname,tuple(self.args),self.result)) + def __repr__(self): + return "%r <- %s(%s)" % (self.result, self.opname, ", ".join(map(repr, self.args))) def uniqueitems(lst): "Returns a list with duplicate elements removed." Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 25 18:22:45 2003 @@ -3,7 +3,7 @@ """ from pypy.interpreter.baseobjspace import ObjSpace -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation from pypy.translator.annotation import Annotator class Op: @@ -105,6 +105,9 @@ else: return "%s = getattr(%s)" % (self.resultname, ", ".join(args)) + def op_is_true(self): + return "%s = not not %s" % (self.resultname, self.argnames[0]) + class GenPyrex: def __init__(self, functiongraph): self.functiongraph = functiongraph @@ -131,34 +134,44 @@ #self.variablelocations = {} self.lines = [] self.indent = 0 - self.gen_Graph() + self.gen_graph() return "\n".join(self.lines) def putline(self, line): for l in line.split('\n'): self.lines.append(" " * self.indent + l) - def gen_Graph(self): + def gen_graph(self): fun = self.functiongraph - self.entrymap = fun.mkentrymap() + #self.entrymap = fun.mkentrymap() currentlines = self.lines self.lines = [] self.indent += 1 - self.gen_BasicBlock(fun.startblock) + self.gen_block(fun.startblock) self.indent -= 1 # emit the header after the body functionbodylines = self.lines self.lines = currentlines - inputargnames = [ " ".join(self._paramvardecl(var)) for var in fun.startblock.input_args ] + inputargnames = [ " ".join(self._paramvardecl(var)) for var in fun.getargs() ] params = ", ".join(inputargnames) - self.putline("def %s(%s):" % (fun.functionname, params)) + self.putline("def %s(%s):" % (fun.name, params)) self.indent += 1 #self.putline("# %r" % self.annotations) + decllines = [] + missing_decl = [] for var in self.variables_ann: - if var not in fun.startblock.input_args: + if var not in fun.getargs(): decl = self._vardecl(var) if decl: - self.putline(decl) + decllines.append(decl) + else: + missing_decl.append(self.get_varname(var)) + if missing_decl: + missing_decl.sort() + decllines.append('# untyped variables: ' + ' '.join(missing_decl)) + decllines.sort() + for decl in decllines: + self.putline(decl) self.indent -= 1 self.lines.extend(functionbodylines) @@ -174,7 +187,7 @@ prefix = "i_" else: prefix = "" - return prefix + var.pseudoname + return prefix + var.name def _paramvardecl(self, var): vartype = self.get_type(var) @@ -197,18 +210,21 @@ #self.variablelocations[obj] = block return self.get_varname(obj) elif isinstance(obj, Constant): + value = obj.value try: - name = obj.value.__name__ + name = value.__name__ except AttributeError: pass else: - if __builtins__.get(name) is obj.value: + if __builtins__.get(name) is value: return name # built-in functions represented as their name only - return repr(obj.value) + if isinstance(value, int): + value = int(value) # cast subclasses of int (i.e. bools) to ints + return repr(value) else: raise TypeError("Unknown class: %s" % obj.__class__) - def gen_BasicBlock(self, block): + def gen_block(self, block): if self.blockids.has_key(block): self.putline('cinline "goto Label%s;"' % self.blockids[block]) return @@ -217,45 +233,45 @@ blockids.setdefault(block, len(blockids)) #the label is only, if there are more, then are multiple references to the block - if len(self.entrymap[block]) > 1: - self.putline('cinline "Label%s:"' % blockids[block]) + #XXX if len(self.entrymap[block]) > 1: + self.putline('cinline "Label%s:"' % blockids[block]) for op in block.operations: opg = Op(op, self, block) self.putline(opg()) - self.dispatchBranch(block, block.branch) - - def dispatchBranch(self, prevblock, branch): - method = getattr(self, "gen_" + branch.__class__.__name__) - method(prevblock, branch) + exits = block.exits + if len(exits) == 1: + self.gen_link(block, exits[0]) + elif len(exits) > 1: + varname = self._str(block.exitswitch, block) + for i in range(len(exits)): + exit = exits[-i-1] # reverse order + cond = self._str(Constant(exit.exitcase), block) + if i == 0: + self.putline("if %s == %s:" % (varname, cond)) + elif i < len(exits) - 1: + self.putline("elif %s == %s:" % (varname, cond)) + else: + self.putline("else: # %s == %s" % (varname, cond)) + self.indent += 1 + self.gen_link(block, exit) + self.indent -= 1 + else: + self.putline("return %s" % self._str(block.inputargs[0], block)) - def gen_Branch(self, prevblock, branch): + def gen_link(self, prevblock, link): _str = self._str - block = branch.target - sourceargs = [_str(arg, prevblock) for arg in branch.args] - targetargs = [_str(arg, branch.target) for arg in block.input_args] - assert(len(sourceargs) == len(targetargs)) - # get rid of identity-assignments + block = link.target + sourceargs = [_str(arg, prevblock) for arg in link.args] + targetargs = [_str(arg, block) for arg in block.inputargs] + assert len(sourceargs) == len(targetargs) + # get rid of identity-assignments sargs, targs = [], [] for s,t in zip(sourceargs, targetargs): if s != t: - sargs.append(s) + sargs.append(s) targs.append(t) if sargs: self.putline("%s = %s" % (", ".join(targs), ", ".join(sargs))) - self.gen_BasicBlock(block) - - def gen_EndBranch(self, prevblock, branch): - self.putline("return %s" % self._str(branch.returnvalue, prevblock)) - - def gen_ConditionalBranch(self, prevblock, branch): - self.putline("if %s:" % self._str(branch.condition, prevblock)) - self.indent += 1 - self.dispatchBranch(prevblock, branch.ifbranch) - self.indent -= 1 - self.putline("else:") - self.indent += 1 - self.dispatchBranch(prevblock, branch.elsebranch) - self.indent -= 1 - + self.gen_block(block) Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Sat Oct 25 18:22:45 2003 @@ -3,7 +3,7 @@ """ from pypy.interpreter.baseobjspace import ObjSpace -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import Constant, Variable, SpaceOperation # debug from pypy.translator.genpyrex import GenPyrex Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 25 18:22:45 2003 @@ -2,8 +2,8 @@ from pypy.tool import test from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex -from pypy.translator.flowmodel import * -from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.objspace.flow.model import * +from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring make_dot = False Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Sat Oct 25 18:22:45 2003 @@ -2,8 +2,8 @@ from pypy.tool import test from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex -from pypy.translator.flowmodel import * -from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.objspace.flow.model import * +from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring make_dot = False From arigo at codespeak.net Sat Oct 25 18:26:23 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 18:26:23 +0200 (MEST) Subject: [pypy-svn] rev 2054 - pypy/trunk/src/pypy/translator/test Message-ID: <20031025162623.242705B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 18:26:22 2003 New Revision: 2054 Modified: pypy/trunk/src/pypy/translator/test/test_sourcegen.py Log: Fixed for the new flow model Modified: pypy/trunk/src/pypy/translator/test/test_sourcegen.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_sourcegen.py (original) +++ pypy/trunk/src/pypy/translator/test/test_sourcegen.py Sat Oct 25 18:26:22 2003 @@ -4,9 +4,9 @@ from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * -from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring #from pypy.translator.test.make_dot import make_ps class SourceGenTestCase(test.IntTestCase): @@ -19,11 +19,10 @@ x = Variable("x") result = Variable("result") op = SpaceOperation("add", [x, Constant(1)], result) - endbranch = EndBranch(result) - block = BasicBlock([x], [x], - [op], - endbranch) - fun = FunctionGraph(block, "f") + block = Block([x]) + fun = FunctionGraph("f", block) + block.operations.append(op) + block.closeblock(Link([result], fun.returnblock)) result = GenPyrex(fun).emitcode() mod = make_module_from_pyxstring('test_source1', udir, result) self.assertEquals(mod.f(1), 2) @@ -39,18 +38,16 @@ i = Variable("i") j = Variable("j") - endbranchelse = EndBranch(i) - endbranchif = EndBranch(j) - conditionres = Variable("conditionres") conditionop = SpaceOperation("lt", [i, Constant(0)], conditionres) - - conditionalbranch = ConditionalBranch(conditionres, endbranchif, endbranchelse) - - startblock = BasicBlock([i, j], [i, j, conditionres], - [conditionop], - conditionalbranch) - fun = FunctionGraph(startblock, "f") + startblock = Block([i, j]) + + fun = FunctionGraph("f", startblock) + startblock.operations.append(conditionop) + startblock.exitswitch = conditionres + startblock.closeblock(Link([i], fun.returnblock, False), + Link([j], fun.returnblock, True)) + result = GenPyrex(fun).emitcode() mod = make_module_from_pyxstring('test_source2', udir, result) self.assertEquals(mod.f(-1, 42), 42) @@ -73,25 +70,20 @@ conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) decop = SpaceOperation("add", [i, Constant(-1)], i) addop = SpaceOperation("add", [i, sum], sum) + startblock = Block([i]) + headerblock = Block([i, sum]) + whileblock = Block([i, sum]) + + fun = FunctionGraph("f", startblock) + startblock.closeblock(Link([i, Constant(0)], headerblock)) + headerblock.operations.append(conditionop) + headerblock.exitswitch = conditionres + headerblock.closeblock(Link([sum], fun.returnblock, False), + Link([i, sum], whileblock, True)) + whileblock.operations.append(addop) + whileblock.operations.append(decop) + whileblock.closeblock(Link([i, sum], headerblock)) - conditionbranch = ConditionalBranch() - headerbranch = Branch() - headerbranch2 = Branch() - whileblock = BasicBlock([i, sum], [i, sum], [addop, decop], headerbranch2) - whilebranch = Branch([i, sum], whileblock) - - endbranch = EndBranch(sum) - conditionbranch.set(conditionres, whilebranch, endbranch) - - headerblock = BasicBlock([i, sum], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i, Constant(0)], headerblock) - headerbranch2.set([i, sum], headerblock) - startblock = BasicBlock([i], [i, sum], - [], headerbranch) - - fun = FunctionGraph(startblock, "f") result = GenPyrex(fun).emitcode() mod = make_module_from_pyxstring('test_source4', udir, result) self.assertEquals(mod.f(3), 6) From hpk at codespeak.net Sat Oct 25 18:44:41 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 18:44:41 +0200 (MEST) Subject: [pypy-svn] rev 2055 - in pypy/trunk/src/pypy/objspace/flow: . test Message-ID: <20031025164441.729095B20E@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 18:44:40 2003 New Revision: 2055 Added: pypy/trunk/src/pypy/objspace/flow/test/test_model.py Modified: pypy/trunk/src/pypy/objspace/flow/model.py Log: added a 'traverse' and a 'flatten' method to the model. 'traverse' lets you send a visitor over the graph. the visitor can either be a callable (will get all nodes) or an object which has methods for visit_FunctionGraph visit_Block visit_Link or possibly even methods for subclasses like SpamBlock, EggBlock etc. Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 18:44:40 2003 @@ -3,6 +3,7 @@ # # the below object/attribute model evolved from # a discussion in Berlin, 4th of october 2003 +from __future__ import generators class FunctionGraph: def __init__(self, name, startblock, return_var=None): @@ -91,3 +92,64 @@ seen[item] = True return result + +#_________________________________________________________ +# a visitor for easy traversal of the above model + +import inspect # for getmro + +class traverse: + edgedef = { + FunctionGraph : ('startblock',), + Block : ('exits',), + Link : ('target',), + } + + def __init__(self, visitor, functiongraph): + """ send the visitor over all (reachable) nodes. + the visitor needs to have either callable attributes 'visit_typename' + or otherwise is callable itself. + """ + self.visitor = visitor + self.seen = {} + self.visit(functiongraph) + + def visit(self, node): + if id(node) in self.seen: + return + + # do the visit + cls = node.__class__ + for subclass in inspect.getmro(cls): + consume = getattr(self.visitor, "visit_" + subclass.__name__, None) + if consume: + break + else: + consume = self.visitor + + self.seen[id(node)] = consume(node) + + # recurse + for dispclass, attrs in self.edgedef.items(): + for subclass in inspect.getmro(cls): + if subclass == dispclass: + for attr in attrs: + for obj in flattenobj(getattr(node, attr)): + self.visit(obj) + return + + raise ValueError, "could not dispatch %r" % cls + +def flatten(funcgraph): + l = [] + traverse(l.append, funcgraph) + return l + +def flattenobj(*args): + for arg in args: + try: + for atom in flattenobj(*arg): + yield atom + except: yield arg + + Added: pypy/trunk/src/pypy/objspace/flow/test/test_model.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/objspace/flow/test/test_model.py Sat Oct 25 18:44:40 2003 @@ -0,0 +1,62 @@ +import autopath +from pypy.tool import test + +from pypy.objspace.flow.model import * + +class TestModel(test.TestCase): + def setUp(self): + self.space = test.objspace('flow') + + def getflow(self, func): + import inspect + try: + func = func.im_func + except AttributeError: + pass + #name = func.func_name + return self.space.build_flow(func) + + #_____________________________________________ + def simplefunc(x): + return x+1 + + def test_simplefunc(self): + graph = self.getflow(self.simplefunc) + l = flatten(graph) + self.assertEquals(len(l), 4) + + def test_class(self): + graph = self.getflow(self.simplefunc) + + class MyVisitor: + def __init__(self): + self.blocks = [] + self.links = [] + + def visit_FunctionGraph(self, graph): + self.graph = graph + def visit_Block(self, block): + self.blocks.append(block) + def visit_Link(self, link): + self.links.append(link) + + v = MyVisitor() + traverse(v, graph) + self.assertEquals(len(v.blocks), 2) + self.assertEquals(len(v.links), 1) + self.assertEquals(v.graph, graph) + self.assertEquals(v.links[0], graph.startblock.exits[0]) + + def loop(x): + x = abs(x) + while x: + x = x - 1 + + def test_loop(self): + graph = self.getflow(self.simplefunc) + l = flatten(graph) + self.assertEquals(len(l), 4) + + +if __name__ == '__main__': + test.main() From arigo at codespeak.net Sat Oct 25 19:22:58 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 19:22:58 +0200 (MEST) Subject: [pypy-svn] rev 2056 - pypy/trunk/src/pypy/translator/test Message-ID: <20031025172258.8B6D95B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 19:22:58 2003 New Revision: 2056 Modified: pypy/trunk/src/pypy/translator/test/test_flowmodel.py Log: Disabled this test. Should be removed later. Modified: pypy/trunk/src/pypy/translator/test/test_flowmodel.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_flowmodel.py (original) +++ pypy/trunk/src/pypy/translator/test/test_flowmodel.py Sat Oct 25 19:22:58 2003 @@ -1,9 +1,9 @@ import autopath from pypy.tool import test -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * -class TestFlowModel(test.IntTestCase): +class DISABLED_TestFlowModel: #(test.IntTestCase): def test_flatten(self): result = Variable("result") endbranch = EndBranch(result) From arigo at codespeak.net Sat Oct 25 19:23:46 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 19:23:46 +0200 (MEST) Subject: [pypy-svn] rev 2057 - in pypy/trunk/src/pypy/translator: . test tool Message-ID: <20031025172346.B33645B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 19:23:46 2003 New Revision: 2057 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/peepfgt.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: Fixed gencl. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sat Oct 25 19:23:46 2003 @@ -1,10 +1,11 @@ import autopath -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * from pypy.translator.annotation import Annotator from pypy.translator.peepfgt import register as fgt_register -# For 2.2 -- sanxiyn +# XXX For 2.2 the emitted code isn't quite right, because we cannot tell +# when we should write "0"/"1" or "nil"/"t". if not isinstance(bool, type): class bool(int): pass @@ -47,6 +48,12 @@ print "(setq", s(result), "(not" self.gen.emit_truth_test(arg1) print "))" + def op_is_true(self): + s = self.str + result, (arg1,) = self.result, self.args + print "(setq", s(result) + self.gen.emit_truth_test(arg1) + print ")" def op_alloc_and_set(self): s = self.str result, (size, init) = self.result, self.args @@ -70,7 +77,7 @@ self.ann = ann def str(self, obj): if isinstance(obj, Variable): - return obj.pseudoname + return obj.name elif isinstance(obj, Constant): return self.conv(obj.value) else: @@ -98,24 +105,23 @@ def emit(self): self.emit_defun(self.fun) def emit_defun(self, fun): - print "(defun", fun.functionname - arglist = fun.get_args() + print "(defun", fun.name + arglist = fun.getargs() print "(", for arg in arglist: print self.str(arg), print ")" print "(prog" - startblock = fun.startblock blocklist = [] def collect_block(node): - if isinstance(node, BasicBlock): + if isinstance(node, Block): blocklist.append(node) - startblock.visit(collect_block) + traverse(collect_block, fun) varlist = {} for block in blocklist: tag = len(self.blockref) self.blockref[block] = tag - for var in block.getlocals(): + for var in block.getvariables(): varlist[var] = None varlist = varlist.keys() print "(", @@ -136,38 +142,37 @@ for op in block.operations: emit_op = Op(self, op) emit_op() - self.dispatch_branch(block.branch) + exits = block.exits + if len(exits) == 1: + self.emit_link(exits[0]) + elif len(exits) > 1: + # only works in the current special case + assert len(exits) == 2 + assert exits[0].exitcase == False + assert exits[1].exitcase == True + print "(if", self.str(block.exitswitch) + print "(progn" + self.emit_link(exits[1]) + print ") ; else" + print "(progn" + self.emit_link(exits[0]) + print "))" + else: + retval = self.str(block.inputargs[0]) + print "(return", retval, ")" def emit_jump(self, block): tag = self.blockref[block] print "(go", "tag" + str(tag), ")" - def dispatch_branch(self, branch): - if isinstance(branch, Branch): - self.emit_branch(branch) - elif isinstance(branch, ConditionalBranch): - self.emit_conditional_branch(branch) - elif isinstance(branch, EndBranch): - self.emit_end_branch(branch) - else: - print "; Branch", branch.__class__, "is missing" - def emit_branch(self, branch): - if branch.target.has_renaming: - source = branch.args - target = branch.target.input_args - print "(psetq", # parallel assignment - for item in zip(source, target): - init, var = map(self.str, item) + def emit_link(self, link): + source = link.args + target = link.target.inputargs + print "(psetq", # parallel assignment + for item in zip(source, target): + init, var = map(self.str, item) + if var != init: print var, init, - print ")" - self.emit_jump(branch.target) - def emit_conditional_branch(self, branch): - print "(if" - self.emit_truth_test(branch.condition) - self.emit_branch(branch.ifbranch) - self.emit_branch(branch.elsebranch) - print ")" - def emit_end_branch(self, branch): - retval = self.str(branch.returnvalue) - print "(return", retval, ")" + print ")" + self.emit_jump(link.target) def emit_truth_test(self, obj): annset = self.ann.annotated[self.cur_block] tp = annset.get_type(obj) Modified: pypy/trunk/src/pypy/translator/peepfgt.py ============================================================================== --- pypy/trunk/src/pypy/translator/peepfgt.py (original) +++ pypy/trunk/src/pypy/translator/peepfgt.py Sat Oct 25 19:23:46 2003 @@ -2,7 +2,7 @@ """ import autopath -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import Variable, Constant, SpaceOperation from pypy.translator.annotation import Annotator def transform_allocate(self): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sat Oct 25 19:23:46 2003 @@ -1,7 +1,6 @@ import autopath from pypy.tool import test from pypy.tool.udir import udir -from pypy.translator.test.buildcl import _make_cl_func import os @@ -30,6 +29,7 @@ global_cl = get_cl() def make_cl_func(func): + from pypy.translator.tool.buildcl import _make_cl_func return _make_cl_func(func, global_cl, udir) Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Sat Oct 25 19:23:46 2003 @@ -28,7 +28,7 @@ def _(*args): fpath.write(out) fp = file(str(fpath), "a") - print >>fp, "(write (", fun.functionname, + print >>fp, "(write (", fun.name, for arg in args: print >>fp, gen.conv(arg), print >>fp, "))" From arigo at codespeak.net Sat Oct 25 20:00:42 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 20:00:42 +0200 (MEST) Subject: [pypy-svn] rev 2058 - pypy/trunk/src/pypy/translator Message-ID: <20031025180042.BAB8D5B20E@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 20:00:42 2003 New Revision: 2058 Modified: pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/translator.py Log: Bug fix in genpyrex.py, and import renaming in translator.py. Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 25 20:00:42 2003 @@ -105,6 +105,9 @@ else: return "%s = getattr(%s)" % (self.resultname, ", ".join(args)) + def op_not(self): + return "%s = not %s" % (self.resultname, self.argnames[0]) + def op_is_true(self): return "%s = not not %s" % (self.resultname, self.argnames[0]) Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sat Oct 25 20:00:42 2003 @@ -27,13 +27,13 @@ import autopath -from pypy.translator.flowmodel import * +from pypy.objspace.flow.model import * from pypy.translator.annset import AnnotationSet, Cell from pypy.translator.annotation import Annotator from pypy.translator.simplify import simplify_graph from pypy.translator.genpyrex import GenPyrex from pypy.translator.gencl import GenCL -from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring +from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring from pypy.objspace.flow import FlowObjSpace @@ -56,7 +56,7 @@ def gv(self): """Shows the control flow graph -- requires 'dot' and 'gv'.""" import os - from pypy.translator.test.make_dot import make_dot + from pypy.translator.tool.make_dot import make_dot from pypy.tool.udir import udir dest = make_dot(self.flowgraph, udir, 'ps') os.system('gv %s' % str(dest)) From hpk at codespeak.net Sat Oct 25 20:18:04 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 20:18:04 +0200 (MEST) Subject: [pypy-svn] rev 2059 - in pypy/trunk/src/pypy/objspace/flow: . test Message-ID: <20031025181804.837AE5B20E@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 20:18:03 2003 New Revision: 2059 Modified: pypy/trunk/src/pypy/objspace/flow/model.py pypy/trunk/src/pypy/objspace/flow/test/test_model.py Log: - nicer error messages - allow a visitor to contain only partial visit_* and try visit() before falling back to calling the visitor object itself (which is needed for allowing functions ...) Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 20:18:03 2003 @@ -125,8 +125,9 @@ if consume: break else: - consume = self.visitor + consume = getattr(self.visitor, 'visit', self.visitor) + assert callable(consume), "visitor not found for %r on %r" % (cls, self.visitor) self.seen[id(node)] = consume(node) # recurse Modified: pypy/trunk/src/pypy/objspace/flow/test/test_model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/test/test_model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/test/test_model.py Sat Oct 25 20:18:03 2003 @@ -47,6 +47,28 @@ self.assertEquals(v.graph, graph) self.assertEquals(v.links[0], graph.startblock.exits[0]) + def test_partial_class(self): + graph = self.getflow(self.simplefunc) + + class MyVisitor: + def __init__(self): + self.blocks = [] + self.links = [] + + def visit_FunctionGraph(self, graph): + self.graph = graph + def visit_Block(self, block): + self.blocks.append(block) + def visit(self, link): + self.links.append(link) + + v = MyVisitor() + traverse(v, graph) + self.assertEquals(len(v.blocks), 2) + self.assertEquals(len(v.links), 1) + self.assertEquals(v.graph, graph) + self.assertEquals(v.links[0], graph.startblock.exits[0]) + def loop(x): x = abs(x) while x: From hpk at codespeak.net Sat Oct 25 21:41:59 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 21:41:59 +0200 (MEST) Subject: [pypy-svn] rev 2062 - in pypy/trunk/src/pypy/translator: test tool Message-ID: <20031025194159.AF8B85B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 21:41:58 2003 New Revision: 2062 Added: pypy/trunk/src/pypy/translator/tool/autopath.py (props changed) - copied unchanged from rev 2050, pypy/trunk/src/pypy/tool/autopath.py Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py pypy/trunk/src/pypy/translator/tool/make_dot.py Log: - rewrote make_dot with the new model.traverse approach - enabled dot everywhere :-) Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sat Oct 25 21:41:58 2003 @@ -6,10 +6,10 @@ from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring -make_dot = False +make_dot = True if make_dot: - from pypy.translator.test.make_dot import make_dot + from pypy.translator.tool.make_dot import make_dot else: def make_dot(*args): pass Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Sat Oct 25 21:41:58 2003 @@ -6,7 +6,7 @@ from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring -make_dot = False +make_dot = True if make_dot: from pypy.translator.test.make_dot import make_dot Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sat Oct 25 21:41:58 2003 @@ -3,129 +3,23 @@ """ """ -import autopath -from pypy.translator.flowmodel import * -import os +import autopath, os +from pypy.objspace.flow.model import * +from pypy.objspace.flow import Space +from pypy.tool.udir import udir debug = 0 - -counters = {} -class Node: - allnodes = [] - def __init__(self, obj): - self.obj = obj - self.allnodes.append(self) - self.edges = [] - self.make_name() - self.data = [] - - def make_name(self): - cls = type(self) - num = counters.setdefault(cls, 0) - counters[cls] += 1 - self.name = '%s%d' % (self.__class__.__name__, num) - - def addedge(self, othernode, name=None): - """ append edge (if not already in the list) - return true if it really was added - """ - if othernode not in self.edges: - self.edges.append((othernode, name)) - return 1 - - def descr_edges(self): - l = [] - style = self.linestyle() - for node,name in self.edges: - if node in self.allnodes: - if name == 'prevblock': - l.append('edge [style=dotted, weight=0, label="%s"]; %s -> %s;' % (name, self, node)) - else: - l.append('edge [style=%s, label="%s"]; %s -> %s;' % (style, name, self, node)) - else: - pass - return "\n".join(l) - - def linestyle(self): - return "solid" - - def get_data(self): - l = self.data[:] - l.insert(0, "%s" % self.obj.__class__.__name__) - return "\\n".join(l) - - def __str__(self): - return self.name - -class NodeFunctionGraph(Node): - def descr_node(self): - """ obj attrs startblock, functionname """ - name = self.name - data = self.get_data() - return '%(name)s [shape=box, label="%(data)s"];' % locals() - - def make_name(self): - self.name = self.obj.functionname - -class NodeBasicBlock(Node): - def descr_node(self): - """ condition, ifbranch, elsebranch """ - name = self.name - data = self.get_data() - #content = "\\n".join([name] + map(repr,self.obj.operations)) + "\\n"+data - return '%(name)s [shape=box, label="%(data)s"];' % locals() - -class NodeBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=diamond, label="%(data)s"];' % locals() - -class NodeConditionalBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=diamond, label="%(data)s"];' % locals() - - def linestyle(self): - return 'dashed' - -class NodeEndBranch(Node): - def descr_node(self): - """ args, target """ - name = self.name - data = self.get_data() - return '%(name)s [shape=circle, label="%(data)s"];' % locals() - -def flatten(*args): - for arg in args: - try: - for atom in apply(flatten,arg): - yield atom - except: yield arg - - class DotGen: def __init__(self): self.nodes = {} self.counters = {} - def get_source(self, fun): - self.traverse(fun) - l = [] - for node in self.nodes.values(): - if hasattr(node, 'source'): - l.insert(0, node.descr_node()) - l.insert(0, node.descr_edges()) - else: - l.append(node.descr_node()) - l.append(node.descr_edges()) - - content = "\n".join(l) - + def get_source(self, funcgraph): + self.blocks = {} + self.lines = [] + traverse(self, funcgraph) + content = "\n".join(self.lines) return """ digraph test { node [fontname=Times]; @@ -133,102 +27,101 @@ %(content)s }""" % locals() - def get_node_class(self, cls): - g = globals() - #print cls.__name__ - nodeclass = g.get('Node%s' % cls.__name__, None) - if nodeclass: - return nodeclass - - for base in cls.__bases__: - nodeclass = self.get_node_class(base) - if nodeclass: - return nodeclass - - def makenode(self, obj): + def blockname(self, block): + i = id(block) try: - return self.nodes[obj] + return self.blocks[i] except KeyError: - pass - if not hasattr(obj, '__class__'): - return - cls = self.get_node_class(obj.__class__) - if cls is not None: - node = cls(obj) - self.nodes[obj] = node - return node + self.blocks[i] = name = "block%d" % len(self.blocks) + return name - def traverse(self, obj, objname=None): - try: - return self.nodes[obj] - except KeyError: - pass - except TypeError: - return - node = self.makenode(obj) - if node: - self.nodes[obj] = node - for name, attr in obj.__dict__.items(): - ##XXX it makes the graph not very readeable - if name == "framestate": - continue - trynode = self.traverse(attr, name) - if trynode: - node.addedge(trynode, name) - else: - if name == 'source' and type(attr) is str: - attr = "\\l".join(attr.split('\n')) - node.data.append('\\l%s' % attr.replace('"', '\\"')) - else: - node.data.append("%s=%s" % (name, repr(attr).replace('"', '\\"'))) - #print "unknown attribute", name, item - return node - elif debug: - print "unknown obj", obj + def emit(self, line): + self.lines.append(line) + + def emit_edge(self, name1, name2, label="", style="dashed", **kw): + d = locals() + d.update(kw) + self.emit('edge [style="%(style)s", dir="forward", weight=0, label="%(label)s"];' % d) + self.emit('%(name1)s -> %(name2)s;' % d) + + def emit_node(self, name, shape, label, **kw): + d = locals() + d.update(kw) + self.emit('%(name)s [shape=%(shape)s, label="%(label)s"];' % d) + + def visit(self, obj): + # ignore for now + return + + def visit_FunctionGraph(self, funcgraph): + name = funcgraph.name + data = name + self.emit('%(name)s [shape=circle, label="%(data)s"];' % locals()) + self.emit_edge(name, self.blockname(funcgraph.startblock), 'startblock') + + def visit_Block(self, block): + name = self.blockname(block) + lines = [] + + lines.extend(map(repr, block.operations)) + lines.append("") + + numblocks = len(block.exits) + + if not numblocks: + shape = "circle" + elif numblocks == 1: + shape = "box" + else: + lines.append("exitswitch: %s" % block.exitswitch) + shape = "octagon" + + iargs = " ".join(map(repr, block.inputargs)) + data = "%s(%s)\\ninputargs: %s\\n\\n" % (name, block.__class__.__name__, iargs) + data = data + "\l".join(lines) + self.emit_node(name, shape, data) + + if numblocks == 1: + name2 = self.blockname(block.exits[0].target) + label = " ".join(map(repr, block.exits[0].args)) + self.emit_edge(name, name2, label, style="solid") + elif numblocks >1: + i = 0 + for link in block.exits: + name2 = self.blockname(link.target) + label = " ".join(map(repr, link.args)) + label = "%s: %s" %(str(i), label) + self.emit_edge(name, name2, label, style="dotted") + i+=1 -def make_dot(fun, udir, target='ps'): - dotgen = DotGen() - name = fun.functionname - - from vpath.local import Path +def make_dot(graph, storedir=None, target='ps'): from vpath.adapter.process import exec_cmd - dest = udir.join('%s.dot' % name) - dest.write(dotgen.get_source(fun)) + + if storedir is None: + storedir = udir + + dotgen = DotGen() + name = graph.name + dest = storedir.join('%s.dot' % name) + #dest = storedir.dirname().join('%s.dot' % name) + source = dotgen.get_source(graph) + #print source + dest.write(source) psdest = dest.newext(target) out = exec_cmd('dot -T%s %s' % (target, str(dest))) psdest.write(out) #print "wrote", psdest return psdest -if __name__ == '__main__': - i = Variable("i") - sum = Variable("sum") - - conditionres = Variable("conditionres") - conditionop = SpaceOperation("gt", [i, Constant(0)], conditionres) - decop = SpaceOperation("add", [i, Constant(-1)], i) - addop = SpaceOperation("add", [i, sum], sum) - - conditionbranch = ConditionalBranch() - headerbranch = Branch() - headerbranch2 = Branch() - whileblock = BasicBlock([i, sum], [i, sum], [addop, decop], headerbranch2) - whilebranch = Branch([i, sum], whileblock) - - endbranch = EndBranch(sum) - conditionbranch.set(conditionres, whilebranch, endbranch) - headerblock = BasicBlock([i, sum], [i, conditionres], - [conditionop], conditionbranch) - - headerbranch.set([i, Constant(0)], headerblock) - headerbranch2.set([i, sum], headerblock) - startblock = BasicBlock([i], [i, sum], - [], headerbranch) - - startblock.prevblock = headerblock - - fun = FunctionGraph(startblock, "f") - - make_png(fun) +if __name__ == '__main__': + def f(x): + i = 0 + while i < x: + i += 1 + return i + + space = Space() + graph = space.build_flow(f) + make_dot(graph) From hpk at codespeak.net Sat Oct 25 22:06:41 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 22:06:41 +0200 (MEST) Subject: [pypy-svn] rev 2063 - in pypy/trunk/src/pypy: objspace/flow translator/tool Message-ID: <20031025200641.6F1A15B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 22:06:40 2003 New Revision: 2063 Modified: pypy/trunk/src/pypy/objspace/flow/model.py pypy/trunk/src/pypy/translator/tool/make_dot.py Log: some tweaks to dot-view (and view of Variables/Constants) Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 22:06:40 2003 @@ -51,7 +51,7 @@ Variable.counter += 1 self.name = name def __repr__(self): - return '<%s>' % self.name + return '%s' % self.name class Constant: def __init__(self, value): @@ -63,7 +63,7 @@ def __hash__(self): return hash(self.value) def __repr__(self): - return '<%r>' % (self.value,) + return '%r' % (self.value,) class SpaceOperation: def __init__(self, opname, args, result): @@ -80,7 +80,7 @@ def __hash__(self): return hash((self.opname,tuple(self.args),self.result)) def __repr__(self): - return "%r <- %s(%s)" % (self.result, self.opname, ", ".join(map(repr, self.args))) + return "%r = %s(%s)" % (self.result, self.opname, ", ".join(map(repr, self.args))) def uniqueitems(lst): "Returns a list with duplicate elements removed." Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sat Oct 25 22:06:40 2003 @@ -38,16 +38,16 @@ def emit(self, line): self.lines.append(line) - def emit_edge(self, name1, name2, label="", style="dashed", **kw): + def emit_edge(self, name1, name2, label="", style="dashed", color="black", **kw): d = locals() d.update(kw) - self.emit('edge [style="%(style)s", dir="forward", weight=0, label="%(label)s"];' % d) + self.emit('edge [style=%(style)s, color=%(color)s, dir="forward", weight=0, label="%(label)s"];' % d) self.emit('%(name1)s -> %(name2)s;' % d) - def emit_node(self, name, shape, label, **kw): + def emit_node(self, name, shape, label, color="black", **kw): d = locals() d.update(kw) - self.emit('%(name)s [shape=%(shape)s, label="%(label)s"];' % d) + self.emit('%(name)s [shape=%(shape)s, color="%(color)s" label="%(label)s"];' % d) def visit(self, obj): # ignore for now @@ -68,18 +68,20 @@ numblocks = len(block.exits) + color = "black" if not numblocks: shape = "circle" elif numblocks == 1: shape = "box" else: + color = "red" lines.append("exitswitch: %s" % block.exitswitch) shape = "octagon" iargs = " ".join(map(repr, block.inputargs)) data = "%s(%s)\\ninputargs: %s\\n\\n" % (name, block.__class__.__name__, iargs) data = data + "\l".join(lines) - self.emit_node(name, shape, data) + self.emit_node(name, label=data, shape=shape, color=color) if numblocks == 1: name2 = self.blockname(block.exits[0].target) @@ -91,7 +93,7 @@ name2 = self.blockname(link.target) label = " ".join(map(repr, link.args)) label = "%s: %s" %(str(i), label) - self.emit_edge(name, name2, label, style="dotted") + self.emit_edge(name, name2, label, style="dotted", color=color) i+=1 @@ -124,4 +126,4 @@ space = Space() graph = space.build_flow(f) - make_dot(graph) + make_dot(graph, udir.dirname()) From arigo at codespeak.net Sat Oct 25 22:09:34 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 22:09:34 +0200 (MEST) Subject: [pypy-svn] rev 2064 - in pypy/trunk/src/pypy: interpreter objspace/flowtranslator translator/test Message-ID: <20031025200934.5D4F25B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 22:09:32 2003 New Revision: 2064 Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py pypy/trunk/src/pypy/objspace/flow/objspace.py pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Log: Updated slice code: M pypy/interpreter/baseobjspace.py newslice() incorrectly documented M pypy/objspace/flow/objspace.py this newslice() now forces w_None instead of None M pypy/translator/test/test_typedpyrex.py M pypy/translator/test/snippet.py test fix, don't use extended slices in RPython M pypy/translator/annotation.py M pypy/translator/genpyrex.py implementation of slice fixes Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/baseobjspace.py (original) +++ pypy/trunk/src/pypy/interpreter/baseobjspace.py Sat Oct 25 22:09:32 2003 @@ -294,6 +294,6 @@ # newlist([w_1, w_2,...]) -> w_list # newstring([w_1, w_2,...]) -> w_string from ascii numbers (bytes) # newdict([(w_key,w_value),...]) -> w_dict -#newslice(w_start,w_stop,w_step) -> w_slice (w_step may be a real None) +#newslice(w_start,w_stop,w_step) -> w_slice (any argument may be a real None) # next(w_iter) -> w_value or raise NoValue # Modified: pypy/trunk/src/pypy/objspace/flow/objspace.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/objspace.py (original) +++ pypy/trunk/src/pypy/objspace/flow/objspace.py Sat Oct 25 22:09:32 2003 @@ -17,6 +17,7 @@ def initialize(self): import __builtin__ self.w_builtins = Constant(__builtin__.__dict__) + self.w_None = Constant(None) self.w_KeyError = Constant(KeyError) #self.make_builtins() #self.make_sys() @@ -34,7 +35,10 @@ def newlist(self, args_w): return self.do_operation('newlist', *args_w) - def newslice(self, w_start, w_stop, w_step): + def newslice(self, w_start=None, w_stop=None, w_step=None): + if w_start is None: w_start = self.w_None + if w_stop is None: w_stop = self.w_None + if w_step is None: w_step = self.w_None return self.do_operation('newslice', w_start, w_stop, w_step) def wrap(self, obj): Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Sat Oct 25 22:09:32 2003 @@ -129,6 +129,9 @@ ann = SpaceOperation("getitem",[op.result,Constant(i)],op.args[i]) annotations.add(ann) + def consider_op_newslice(self,op,annotations): + annotations.set_type(op.result, slice) + def consider_const(self,to_var,const,annotations): if getattr(const, 'dummy', False): return # undefined local variables Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 25 22:09:32 2003 @@ -61,7 +61,28 @@ return "\n".join(lines) def op_getitem(self): - return "%s = %s[%s]" % ((self.resultname,) + tuple(self.argnames)) + direct = "%s = %s[%s]" % ((self.resultname,) + tuple(self.argnames)) + w_sequence, w_index = self.op.args + tp = self.gen.get_type(w_index) + if tp is int: + return direct + else: + # the index could be a slice + indexname = self.argnames[1] + lines = [] + if tp is slice: # XXX do this better + lines.append('if 1:') + else: + lines.append('from types import SliceType') + lines.append('if isinstance(%s, SliceType):' % indexname) + lines.append(' assert %s.step is None' % indexname) + lines.append(' %s = %s[%s.start:%s.stop]' % (self.resultname, + self.argnames[0], + indexname, + indexname)) + lines.append('else:') + lines.append(' ' + direct) + return "\n".join(lines) def op_newtuple(self): if self.argnames: @@ -182,6 +203,8 @@ if var in self.variables_ann: ann = self.variables_ann[var] return ann.get_type(var) + elif isinstance(var, Constant): + return type(var.value) else: return None Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Sat Oct 25 22:09:32 2003 @@ -144,4 +144,9 @@ def half_of_n(n): """Slice test""" - return len(range(n)[0:n:2]) + i = 0 + lst = range(n) + while lst: + lst = lst[1:-1] + i = i + 1 + return i Modified: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_typedpyrex.py (original) +++ pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Sat Oct 25 22:09:32 2003 @@ -9,7 +9,7 @@ make_dot = True if make_dot: - from pypy.translator.test.make_dot import make_dot + from pypy.translator.tool.make_dot import make_dot else: def make_dot(*args): pass From arigo at codespeak.net Sat Oct 25 22:28:48 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 22:28:48 +0200 (MEST) Subject: [pypy-svn] rev 2065 - in pypy/trunk/src/pypy: objspace/flow translator Message-ID: <20031025202848.4C7C25B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 22:28:47 2003 New Revision: 2065 Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/objspace/flow/model.py pypy/trunk/src/pypy/translator/genpyrex.py Log: Rewrote mkentrymap(). Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Sat Oct 25 22:28:47 2003 @@ -113,7 +113,8 @@ block.dead = True block.operations = () outputargs = block.framestate.getoutputargs(newstate) - block.exits = (Link(outputargs, newblock),) + block.exits = [] + block.closeblock(Link(outputargs, newblock)) newblock.patchframe(frame, self) self.joinpoints[next_instr] = newblock Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 22:28:47 2003 @@ -22,6 +22,7 @@ self.args = args # mixed list of var/const self.target = target # block self.exitcase = exitcase # this is a concrete value + self.prevblock = None # the block this Link is an exit of class Block: @@ -41,6 +42,8 @@ def closeblock(self, *exits): assert self.exits == [], "block already closed" + for exit in exits: + exit.prevblock = self self.exits = exits class Variable: @@ -153,4 +156,13 @@ yield atom except: yield arg - +def mkentrymap(funcgraph): + "Returns a dict mapping Blocks to lists of Links." + startlink = Link(funcgraph.getargs(), funcgraph.startblock) + result = {funcgraph.startblock: [startlink]} + def visit(link): + if isinstance(link, Link): + lst = result.setdefault(link.target, []) + lst.append(link) + traverse(visit, funcgraph) + return result Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Sat Oct 25 22:28:47 2003 @@ -4,6 +4,7 @@ """ from pypy.interpreter.baseobjspace import ObjSpace from pypy.objspace.flow.model import Variable, Constant, SpaceOperation +from pypy.objspace.flow.model import mkentrymap from pypy.translator.annotation import Annotator class Op: @@ -167,7 +168,7 @@ def gen_graph(self): fun = self.functiongraph - #self.entrymap = fun.mkentrymap() + self.entrymap = mkentrymap(fun) currentlines = self.lines self.lines = [] self.indent += 1 @@ -258,9 +259,9 @@ blockids = self.blockids blockids.setdefault(block, len(blockids)) - #the label is only, if there are more, then are multiple references to the block - #XXX if len(self.entrymap[block]) > 1: - self.putline('cinline "Label%s:"' % blockids[block]) + #the label is only written if there are multiple refs to the block + if len(self.entrymap[block]) > 1: + self.putline('cinline "Label%s:"' % blockids[block]) for op in block.operations: opg = Op(op, self, block) self.putline(opg()) From hpk at codespeak.net Sat Oct 25 22:30:16 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 22:30:16 +0200 (MEST) Subject: [pypy-svn] rev 2066 - pypy/trunk/src/pypy/translator/tool Message-ID: <20031025203016.F2DF15B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 22:30:16 2003 New Revision: 2066 Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py Log: refactored emit_edge and emit_node to be nicer Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sat Oct 25 22:30:16 2003 @@ -38,16 +38,25 @@ def emit(self, line): self.lines.append(line) - def emit_edge(self, name1, name2, label="", style="dashed", color="black", **kw): + def emit_edge(self, name1, name2, label="", + style="dashed", + color="black", + dir="forward", + decorateP="", + ): d = locals() - d.update(kw) - self.emit('edge [style=%(style)s, color=%(color)s, dir="forward", weight=0, label="%(label)s"];' % d) - self.emit('%(name1)s -> %(name2)s;' % d) - - def emit_node(self, name, shape, label, color="black", **kw): + attrs = [('%s="%s"' % (x, d[x])) for x in d if isinstance(x, str)] + self.emit('edge [%s];' % ", ".join(attrs)) + self.emit('%s -> %s' % (name1, name2)) + + def emit_node(self, name, + shape="diamond", + label="", + color="black", + ): d = locals() - d.update(kw) - self.emit('%(name)s [shape=%(shape)s, color="%(color)s" label="%(label)s"];' % d) + attrs = [('%s="%s"' % (x, d[x])) for x in d if isinstance(x, str)] + self.emit('%s [%s];' % (name, ", ".join(attrs))) def visit(self, obj): # ignore for now @@ -60,14 +69,11 @@ self.emit_edge(name, self.blockname(funcgraph.startblock), 'startblock') def visit_Block(self, block): + # do the block itself name = self.blockname(block) - lines = [] - - lines.extend(map(repr, block.operations)) + lines = map(repr, block.operations) lines.append("") - numblocks = len(block.exits) - color = "black" if not numblocks: shape = "circle" @@ -81,8 +87,10 @@ iargs = " ".join(map(repr, block.inputargs)) data = "%s(%s)\\ninputargs: %s\\n\\n" % (name, block.__class__.__name__, iargs) data = data + "\l".join(lines) + self.emit_node(name, label=data, shape=shape, color=color) + # do links/exits if numblocks == 1: name2 = self.blockname(block.exits[0].target) label = " ".join(map(repr, block.exits[0].args)) From arigo at codespeak.net Sat Oct 25 22:48:30 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 22:48:30 +0200 (MEST) Subject: [pypy-svn] rev 2067 - pypy/trunk/src/pypy/translator Message-ID: <20031025204830.9D57C5B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 22:48:30 2003 New Revision: 2067 Modified: pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/translator.py Log: Reintroduced and fixed eliminate_empty_blocks(). Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Sat Oct 25 22:48:30 2003 @@ -2,26 +2,37 @@ generate Pyrex files from the flowmodel. """ -from pypy.interpreter.baseobjspace import ObjSpace -from pypy.objspace.flow.model import Constant, Variable, SpaceOperation +from pypy.objspace.flow.model import * # debug from pypy.translator.genpyrex import GenPyrex -def eliminate_fun_params_renaming(graph): - """We allways rename the params - at the first branch, which isn't really necessary""" - return graph - def eliminate_empty_blocks(graph): - """simplify_vars() - Things we know we can remove: - 1. Basic blocks that do not contain any operations. - When this happens, we need to replace the preceeding branch with the - following branch. Arguments of the following branch should be - overwritten with the arguments of the preceeding branch, but any - additional arguments should be kept. - 2. Branches into basic blocks that have a single entry point. + """Eliminate basic blocks that do not contain any operations. + When this happens, we need to replace the preceeding link with the + following link. Arguments of the links should be updated.""" + def visit(link): + if isinstance(link, Link): + while not link.target.operations and len(link.target.exits) == 1: + block1 = link.target + exit = block1.exits[0] + outputargs = [] + for v in exit.args: + if isinstance(v, Variable): + # this variable is valid in the context of block1 + # but it must come from 'link' + i = block1.inputargs.index(v) + v = link.args[i] + outputargs.append(v) + link.args = outputargs + link.target = exit.target + # the while loop above will simplify recursively the new link + traverse(visit, graph) + +def xxx_not_done_yet(): + """ + 2. Unconditional links into basic blocks that have a single entry point. At this point, we can append all the operations of the following basic block to the preceeding basic block (but renaming variables with the appropriate arguments.) @@ -66,7 +77,5 @@ def simplify_graph(graph): """apply all the existing optimisations to the graph""" - #XXX doesn't work right on sieve_of_eras... graph = eliminate_empty_blocks(graph) - graph = eliminate_fun_params_renaming(graph) + eliminate_empty_blocks(graph) return graph - Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sat Oct 25 22:48:30 2003 @@ -22,7 +22,8 @@ assert f(arg) == func(arg) Some functions will be provided for the benefit of interactive testing. -Currently there are my_bool and my_range. +Currently there are my_bool and my_range, plus the ones defined in +test.snippet. """ import autopath @@ -109,6 +110,7 @@ if __name__ == '__main__': + from pypy.translator.test.snippet import * def my_bool(x): return not not x From hpk at codespeak.net Sat Oct 25 22:55:15 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 22:55:15 +0200 (MEST) Subject: [pypy-svn] rev 2068 - pypy/trunk/src/pypy/translator/tool Message-ID: <20031025205515.DEE275B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 22:55:15 2003 New Revision: 2068 Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py Log: and some more tweaks to coloring, forms and such Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sat Oct 25 22:55:15 2003 @@ -43,6 +43,7 @@ color="black", dir="forward", decorateP="", + weight="5", ): d = locals() attrs = [('%s="%s"' % (x, d[x])) for x in d if isinstance(x, str)] @@ -53,6 +54,8 @@ shape="diamond", label="", color="black", + fillcolor="white", + style="filled", ): d = locals() attrs = [('%s="%s"' % (x, d[x])) for x in d if isinstance(x, str)] @@ -65,8 +68,14 @@ def visit_FunctionGraph(self, funcgraph): name = funcgraph.name data = name - self.emit('%(name)s [shape=circle, label="%(data)s"];' % locals()) + if hasattr(funcgraph, 'source'): + source = funcgraph.source.replace('"', "'") + data += "\\n" + "\\l".join(source.split('\n')) + + self.emit_node(name, label=data, shape="box", fillcolor="green", style="filled") + #('%(name)s [fillcolor="green", shape=box, label="%(data)s"];' % locals()) self.emit_edge(name, self.blockname(funcgraph.startblock), 'startblock') + self.emit_edge(name, self.blockname(funcgraph.returnblock), 'returnblock', style="dashed") def visit_Block(self, block): # do the block itself @@ -75,8 +84,10 @@ lines.append("") numblocks = len(block.exits) color = "black" + fillcolor = "white" if not numblocks: - shape = "circle" + shape = "box" + fillcolor="green" elif numblocks == 1: shape = "box" else: @@ -88,7 +99,7 @@ data = "%s(%s)\\ninputargs: %s\\n\\n" % (name, block.__class__.__name__, iargs) data = data + "\l".join(lines) - self.emit_node(name, label=data, shape=shape, color=color) + self.emit_node(name, label=data, shape=shape, color=color, style="filled", fillcolor=fillcolor) # do links/exits if numblocks == 1: From arigo at codespeak.net Sat Oct 25 23:22:13 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 23:22:13 +0200 (MEST) Subject: [pypy-svn] rev 2070 - pypy/trunk/src/pypy/translator/tool Message-ID: <20031025212213.B81A75B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 23:22:13 2003 New Revision: 2070 Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py Log: Use link.exitcase instead of enumerating the exits Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sat Oct 25 23:22:13 2003 @@ -107,13 +107,11 @@ label = " ".join(map(repr, block.exits[0].args)) self.emit_edge(name, name2, label, style="solid") elif numblocks >1: - i = 0 for link in block.exits: name2 = self.blockname(link.target) label = " ".join(map(repr, link.args)) - label = "%s: %s" %(str(i), label) + label = "%s: %s" %(link.exitcase, label) self.emit_edge(name, name2, label, style="dotted", color=color) - i+=1 def make_dot(graph, storedir=None, target='ps'): From arigo at codespeak.net Sat Oct 25 23:26:39 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 23:26:39 +0200 (MEST) Subject: [pypy-svn] rev 2071 - pypy/trunk/src/pypy/translator Message-ID: <20031025212639.96DA55B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 23:26:39 2003 New Revision: 2071 Modified: pypy/trunk/src/pypy/translator/simplify.py Log: Simplify seems to work fine as far as the various tests can tell. test_simplify.py still needs to be updated to the new flow model. Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Sat Oct 25 23:26:39 2003 @@ -15,6 +15,8 @@ def visit(link): if isinstance(link, Link): while not link.target.operations and len(link.target.exits) == 1: + assert link.target is not link.prevblock, ( + "the graph contains an empty infinite loop") block1 = link.target exit = block1.exits[0] outputargs = [] @@ -30,52 +32,41 @@ # the while loop above will simplify recursively the new link traverse(visit, graph) -def xxx_not_done_yet(): +def join_blocks(graph): + """Links can be deleted if they are the single exit of a block and + the single entry point of the next block. When this happens, we can + append all the operations of the following block to the preceeding + block (but renaming variables with the appropriate arguments.) """ - 2. Unconditional links into basic blocks that have a single entry point. - At this point, we can append all the operations of the following basic - block to the preceeding basic block (but renaming variables with the - appropriate arguments.) - """ - nodelist = graph.flatten() - entrymap = graph.mkentrymap() - victims = True - while victims: - victims = False - entrymap = graph.mkentrymap() - for node in graph.flatten(): - if isinstance(node, BasicBlock) and len(node.operations) == 0: - prevnodes = entrymap[node] - if len(prevnodes) != 1: - continue - prevbranch = prevnodes[0] - nextbranch = node.branch - if not isinstance(prevbranch, Branch): - continue - if isinstance(nextbranch, EndBranch): - var = nextbranch.returnvalue - prevprevnode = entrymap[prevbranch] - assert len(prevprevnode) == 1 - if var in node.input_args: - i = node.input_args.index(var) - nextbranch.returnvalue = prevbranch.args[i] - prevprevnode[0].replace_branch(prevbranch, nextbranch) - elif isinstance(nextbranch, ConditionalBranch): - continue - else: - # renaming ... (figure it out yourself :-) - if len(prevbranch.args) > len(nextbranch.args): - prevbranch.args = prevbranch.args[:len(nextbranch.args)] - else: - prevbranch.args.extend(nextbranch.args[len(prevbranch.args):]) - prevbranch.target = nextbranch.target - #print "eliminated", node, nextbranch - victims = True - # restart the elimination-for loop cleanly - break - return graph + entrymap = mkentrymap(graph) + + def visit(link): + if isinstance(link, Link): + if (len(link.prevblock.exits) == 1 and + len(entrymap[link.target]) == 1 and + link.target.exits): # stop at the returnblock + renaming = {} + for vprev, vtarg in zip(link.args, link.target.inputargs): + renaming[vtarg] = vprev + def rename(v): + return renaming.get(v, v) + for op in link.target.operations: + args = [rename(a) for a in op.args] + op = SpaceOperation(op.opname, args, rename(op.result)) + link.prevblock.operations.append(op) + exits = [] + for exit in link.target.exits: + args = [rename(a) for a in exit.args] + exits.append(Link(args, exit.target, exit.exitcase)) + link.prevblock.exitswitch = rename(link.target.exitswitch) + link.prevblock.recloseblock(*exits) + # simplify recursively the new links + for exit in exits: + visit(exit) + traverse(visit, graph) def simplify_graph(graph): """apply all the existing optimisations to the graph""" eliminate_empty_blocks(graph) + join_blocks(graph) return graph From hpk at codespeak.net Sat Oct 25 23:31:48 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 23:31:48 +0200 (MEST) Subject: [pypy-svn] rev 2072 - pypy/trunk/src/pypy/translator/test Message-ID: <20031025213148.913F65B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 23:31:48 2003 New Revision: 2072 Removed: pypy/trunk/src/pypy/translator/test/test_simplify.py Log: removed obsolete tests Deleted: /pypy/trunk/src/pypy/translator/test/test_simplify.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/test_simplify.py Sat Oct 25 23:31:48 2003 +++ (empty file) @@ -1,121 +0,0 @@ -import autopath -from pypy.tool import test -from pypy.tool.udir import udir -from pypy.translator.genpyrex import GenPyrex -from pypy.translator.flowmodel import * -from pypy.translator.test.buildpyxmodule import make_module_from_pyxstring -from pypy.translator.simplify import eliminate_empty_blocks - -make_dot = 0 - -if make_dot: - from pypy.translator.test.make_dot import make_dot -else: - def make_dot(*args): pass - -class SimplifyTestCase(test.IntTestCase): - def setUp(self): - self.space = test.objspace('flow') - - def make_graph(self, func): - """ make a pyrex-generated cfunction from the given func """ - import inspect - try: - func = func.im_func - except AttributeError: - pass - name = func.func_name - funcgraph = self.space.build_flow(func) - funcgraph.source = inspect.getsource(func) - result = GenPyrex(funcgraph).emitcode() - return funcgraph - - def xxxmake_cfunc(self, func): - """ make a pyrex-generated cfunction from the given func """ - import inspect - try: - func = func.im_func - except AttributeError: - pass - name = func.func_name - funcgraph = self.space.build_flow(func) - funcgraph.source = inspect.getsource(func) - result = GenPyrex(funcgraph).emitcode() - make_dot(funcgraph, udir, 'ps') - mod = make_module_from_pyxstring(name, udir, result) - return getattr(mod, name) - - def make_cfunc_from_graph (self, graph): - name = graph.functionname - result = GenPyrex(graph).emitcode() - make_dot(graph, udir, 'ps') - mod = make_module_from_pyxstring(name, udir, result) - return getattr(mod, name) - - #____________________________________________________ - def simple_while(i): - j = 0 - while j < i: - j = j + 1 - return j - - def test_simple_func_identical_results(self): - graph = self.make_graph(self.simple_while) - f0 = self.make_cfunc_from_graph(graph) - newgraph = eliminate_empty_blocks(graph) - newgraph.functionname = 'simple_while_optimized' - f1 = self.make_cfunc_from_graph(newgraph) - self.assertEquals(f0(3), f1(3)) - self.assertEquals(f1(3), self.simple_while.im_func(3)) - -class TestFlowModelSimplification(test.IntTestCase): - def test_eliminate_empty_block_simple(self): - result = Variable("result") - endbranch = EndBranch(result) - op = SpaceOperation('',[],[]) - block2 = BasicBlock([result], [result], [op], endbranch) - branch2 = Branch([result], block2) - block1 = BasicBlock([result], [result], [], branch2) - branch1 = Branch([result], block1) - startblock = BasicBlock([result], [result], [], branch1) - fun = FunctionGraph(startblock, "f") - - eliminate_empty_blocks(fun) - nodelist = fun.flatten() - - self.assert_(startblock in nodelist) - self.assert_(block1 not in nodelist) - - def test_eliminate_empty_block_renaming(self): - result = Variable("result") - x = Variable("x") - y = Variable("y") - zero = Constant(0) - endbranch = EndBranch(result) - op = SpaceOperation('',[],[]) - - block2 = BasicBlock([result], [], [op], endbranch) - - branch2 = Branch([y,zero], block2) - - block1 = BasicBlock([x], [], [], branch2) - - branch1 = Branch([x], block1) - - startblock = BasicBlock([x], [], [], branch1) - fun = FunctionGraph(startblock, "f") - make_dot(fun, udir, 'ps') - eliminate_empty_blocks(fun) - fun.functionname = 'f_optimized' - make_dot(fun, udir, 'ps') - nodelist = fun.flatten() - - self.assert_(startblock in nodelist) - self.assert_(block1 not in nodelist) - self.assert_(block1 not in nodelist) - self.assertEquals(startblock.branch.args[0], x) - self.assertEquals(startblock.branch.args[1], zero) - - -if __name__ == '__main__': - test.main() From hpk at codespeak.net Sat Oct 25 23:32:43 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 23:32:43 +0200 (MEST) Subject: [pypy-svn] rev 2073 - pypy/trunk/src/pypy/translator/test Message-ID: <20031025213243.B86D65B223@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 23:32:43 2003 New Revision: 2073 Removed: pypy/trunk/src/pypy/translator/test/test_flowmodel.py Log: removed another obsolete test Deleted: /pypy/trunk/src/pypy/translator/test/test_flowmodel.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/test_flowmodel.py Sat Oct 25 23:32:43 2003 +++ (empty file) @@ -1,60 +0,0 @@ - -import autopath -from pypy.tool import test -from pypy.objspace.flow.model import * - -class DISABLED_TestFlowModel: #(test.IntTestCase): - def test_flatten(self): - result = Variable("result") - endbranch = EndBranch(result) - block = BasicBlock([result], [result], - [], - endbranch) - fun = FunctionGraph(block, "f") - - nodelist = fun.flatten() - self.assert_(endbranch in nodelist) - self.assert_(block in nodelist) - self.assert_(result not in nodelist) - - def test_backedge_simple(self): - result = Variable("result") - endbranch = EndBranch(result) - block = BasicBlock([result], [result], - [], - endbranch) - fun = FunctionGraph(block, "f") - em = fun.mkentrymap() - self.assertEquals(em[endbranch], [block]) - - def test_flatten_more(self): - result = Variable("result") - endbranch = EndBranch(result) - block2 = BasicBlock([result], [result], [], endbranch) - branch = Branch([result], block2) - block = BasicBlock([result], [result], [], branch) - fun = FunctionGraph(block, "f") - - nodelist = fun.flatten() - self.assert_(endbranch in nodelist) - self.assert_(block in nodelist) - self.assert_(block2 in nodelist) - self.assert_(branch in nodelist) - self.assert_(result not in nodelist) - - def test_backedge_conditional(self): - result = Variable("result") - endbranch = EndBranch(result) - block3 = BasicBlock([result], [result], [], endbranch) - block2 = BasicBlock([result], [result], [], endbranch) - condbranch = ConditionalBranch([result], block2, block3) - block = BasicBlock([result], [result], [], condbranch) - fun = FunctionGraph(block, "f") - - em = fun.mkentrymap() - self.assert_(block2 in em[endbranch]) - self.assert_(block3 in em[endbranch]) - self.assertEquals(em[condbranch], [block]) - -if __name__ == '__main__': - test.main() From arigo at codespeak.net Sat Oct 25 23:33:14 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sat, 25 Oct 2003 23:33:14 +0200 (MEST) Subject: [pypy-svn] rev 2074 - pypy/trunk/src/pypy/objspace/flow Message-ID: <20031025213314.285365B223@thoth.codespeak.net> Author: arigo Date: Sat Oct 25 23:33:13 2003 New Revision: 2074 Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py pypy/trunk/src/pypy/objspace/flow/model.py Log: Forgot to check these in, needed for simplify.py. Modified: pypy/trunk/src/pypy/objspace/flow/flowcontext.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/flowcontext.py (original) +++ pypy/trunk/src/pypy/objspace/flow/flowcontext.py Sat Oct 25 23:33:13 2003 @@ -113,8 +113,7 @@ block.dead = True block.operations = () outputargs = block.framestate.getoutputargs(newstate) - block.exits = [] - block.closeblock(Link(outputargs, newblock)) + block.recloseblock(Link(outputargs, newblock)) newblock.patchframe(frame, self) self.joinpoints[next_instr] = newblock Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 23:33:13 2003 @@ -42,10 +42,14 @@ def closeblock(self, *exits): assert self.exits == [], "block already closed" + self.recloseblock(*exits) + + def recloseblock(self, *exits): for exit in exits: exit.prevblock = self self.exits = exits + class Variable: counter = 0 def __init__(self, name=None): From hpk at codespeak.net Sat Oct 25 23:46:52 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sat, 25 Oct 2003 23:46:52 +0200 (MEST) Subject: [pypy-svn] rev 2075 - pypy/trunk/src/pypy/objspace/flow Message-ID: <20031025214652.69BE75B228@thoth.codespeak.net> Author: hpk Date: Sat Oct 25 23:46:51 2003 New Revision: 2075 Modified: pypy/trunk/src/pypy/objspace/flow/model.py Log: some spaces for more readability Modified: pypy/trunk/src/pypy/objspace/flow/model.py ============================================================================== --- pypy/trunk/src/pypy/objspace/flow/model.py (original) +++ pypy/trunk/src/pypy/objspace/flow/model.py Sat Oct 25 23:46:51 2003 @@ -13,6 +13,7 @@ self.returnblock = Block([return_var or Variable()]) self.returnblock.operations = () self.returnblock.exits = () + def getargs(self): return self.startblock.inputargs @@ -25,7 +26,6 @@ self.prevblock = None # the block this Link is an exit of class Block: - def __init__(self, inputargs): self.inputargs = inputargs # mixed list of variable/const self.operations = [] # list of SpaceOperation(s) @@ -63,12 +63,16 @@ class Constant: def __init__(self, value): self.value = value # a concrete value + def __eq__(self, other): return isinstance(other, Constant) and self.value == other.value + def __ne__(self, other): return not (self == other) + def __hash__(self): return hash(self.value) + def __repr__(self): return '%r' % (self.value,) @@ -77,15 +81,19 @@ self.opname = opname # operation name self.args = list(args) # mixed list of var/const self.result = result # either Variable or Constant instance + def __eq__(self, other): return (self.__class__ is other.__class__ and self.opname == other.opname and self.args == other.args and self.result == other.result) + def __ne__(self, other): return not (self == other) + def __hash__(self): return hash((self.opname,tuple(self.args),self.result)) + def __repr__(self): return "%r = %s(%s)" % (self.result, self.opname, ", ".join(map(repr, self.args))) From sanxiyn at codespeak.net Sun Oct 26 02:41:25 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 02:41:25 +0200 (MEST) Subject: [pypy-svn] rev 2076 - pypy/trunk/src/pypy/translator Message-ID: <20031026004125.5A2D75A7E6@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 02:41:24 2003 New Revision: 2076 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: re-enabled simplify_graph. tests pass. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 26 02:41:24 2003 @@ -2,6 +2,7 @@ from pypy.objspace.flow.model import * from pypy.translator.annotation import Annotator +from pypy.translator.simplify import simplify_graph from pypy.translator.peepfgt import register as fgt_register # XXX For 2.2 the emitted code isn't quite right, because we cannot tell @@ -66,6 +67,7 @@ class GenCL: def __init__(self, fun): + simplify_graph(fun) self.fun = fun self.blockref = {} self.annotate([]) From hpk at codespeak.net Sun Oct 26 10:42:31 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 26 Oct 2003 10:42:31 +0100 (MET) Subject: [pypy-svn] rev 2078 - in pypy/trunk/src/pypy: . tool translator/test translator/tool Message-ID: <20031026094231.642FB5ABC0@thoth.codespeak.net> Author: hpk Date: Sun Oct 26 10:42:30 2003 New Revision: 2078 Removed: pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Modified: pypy/trunk/src/pypy/TODO pypy/trunk/src/pypy/tool/test.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py pypy/trunk/src/pypy/translator/tool/make_dot.py Log: - reorganized the making of pyrex-functions and tests - in the course test_typedpyrex got integrated into test_pyrex. - the generation of dot-files now depends on passing '-v' to a test (or the test-all) script. Moreover, the sessiondirectory is printed, when you give '-v' - the postscript graph file will now display both the non-simplified and the simplified version of the graph. Modified: pypy/trunk/src/pypy/TODO ============================================================================== --- pypy/trunk/src/pypy/TODO (original) +++ pypy/trunk/src/pypy/TODO Sun Oct 26 10:42:30 2003 @@ -1,9 +1,9 @@ -Task: refactor the flowmodel to translator/flowmodel.idea +Done: refactor the flowmodel to translator/flowmodel.idea (Armin and Holger plan on doing this next saturday) Task: announce the AmsterdamSprint (maybe together with the next task) Task: announce the EU proposal - (Armin and Holger plan on doing this next saturday) + (Armin and Holger plan on doing this sunday) Task: update pypy homepage Modified: pypy/trunk/src/pypy/tool/test.py ============================================================================== --- pypy/trunk/src/pypy/tool/test.py (original) +++ pypy/trunk/src/pypy/tool/test.py Sun Oct 26 10:42:30 2003 @@ -337,6 +337,9 @@ run_tests(test) else: run_tests(suite) + if Options.verbose: + from pypy.tool.udir import udir + print "testdata (unittestsession) directory was:", str(udir) if __name__ == '__main__': # test all of pypy Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sun Oct 26 10:42:30 2003 @@ -3,87 +3,83 @@ from pypy.tool.udir import udir from pypy.translator.genpyrex import GenPyrex from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring - - -make_dot = True - -if make_dot: - from pypy.translator.tool.make_dot import make_dot -else: - def make_dot(*args): pass - - -def make_cfunc(func): - """ make a pyrex-generated cfunction from the given func """ - import inspect - try: - func = func.im_func - except AttributeError: - pass - from pypy.objspace.flow import Space - space = Space() - name = func.func_name - funcgraph = space.build_flow(func) - from pypy.translator.simplify import simplify_graph - simplify_graph(funcgraph) - funcgraph.source = inspect.getsource(func) - result = GenPyrex(funcgraph).emitcode() - make_dot(funcgraph, udir, 'ps') - mod = make_module_from_pyxstring(name, udir, result) - return getattr(mod, name) - +from pypy.translator.tool.buildpyxmodule import build_cfunc from pypy.translator.test import snippet as t -class PyrexGenTestCase(test.IntTestCase): +class TypedPyrexGenTestCase(test.IntTestCase): def setUp(self): self.space = test.objspace('flow') + def build_cfunc(self, func): + try: func = func.im_func + except AttributeError: pass + + dot = test.Options.verbose >0 and 1 or 0 + options = { + 'simplify' : 1, + 'dot' : dot, + 'inputargtypes' : [int] * func.func_code.co_argcount + } + return build_cfunc(func, **options) + def test_simple_func(self): - cfunc = make_cfunc(t.simple_func) + cfunc = self.build_cfunc(t.simple_func) self.assertEquals(cfunc(1), 2) def test_while_func(self): - while_func = make_cfunc(t.while_func) + while_func = self.build_cfunc(t.while_func) self.assertEquals(while_func(10), 55) def test_nested_whiles(self): - nested_whiles = make_cfunc(t.nested_whiles) + nested_whiles = self.build_cfunc(t.nested_whiles) self.assertEquals(nested_whiles(111, 114), '...!...!...!...!...!') def test_poor_man_range(self): - poor_man_range = make_cfunc(t.poor_man_range) + poor_man_range = self.build_cfunc(t.poor_man_range) self.assertEquals(poor_man_range(10), range(10)) def test_simple_id(self): #we just want to see, if renaming of parameter works correctly #if the first branch is the end branch - simple_id = make_cfunc(t.simple_id) + simple_id = self.build_cfunc(t.simple_id) self.assertEquals(simple_id(9), 9) def test_branch_id(self): - branch_id = make_cfunc(t.branch_id) + branch_id = self.build_cfunc(t.branch_id) self.assertEquals(branch_id(1, 2, 3), 2) self.assertEquals(branch_id(0, 2, 3), 3) def dont_test_attrs(self): - attrs = make_cfunc(t.attrs) + attrs = self.build_cfunc(t.attrs) self.assertEquals(attrs(), 9) def test_builtinusage(self): - fun = make_cfunc(t.builtinusage) + fun = self.build_cfunc(t.builtinusage) self.assertEquals(fun(), 4) def test_sieve(self): - sieve = make_cfunc(t.sieve_of_eratosthenes) + sieve = self.build_cfunc(t.sieve_of_eratosthenes) self.assertEquals(sieve(), 1028) def test_slice(self): - half = make_cfunc(t.half_of_n) + half = self.build_cfunc(t.half_of_n) self.assertEquals(half(10), 5) +class NoTypePyrexGenTestCase(TypedPyrexGenTestCase): + + def build_cfunc(self, func): + try: func = func.im_func + except AttributeError: pass + + dot = test.Options.verbose >0 and 1 or 0 + options = { + 'simplify' : 1, + 'dot' : dot, + } + return build_cfunc(func, **options) + if __name__ == '__main__': test.main() Deleted: /pypy/trunk/src/pypy/translator/test/test_typedpyrex.py ============================================================================== --- /pypy/trunk/src/pypy/translator/test/test_typedpyrex.py Sun Oct 26 10:42:30 2003 +++ (empty file) @@ -1,67 +0,0 @@ -import autopath -from pypy.tool import test -from pypy.tool.udir import udir -from pypy.translator.genpyrex import GenPyrex -from pypy.objspace.flow.model import * -from pypy.translator.tool.buildpyxmodule import make_module_from_pyxstring - - -make_dot = True - -if make_dot: - from pypy.translator.tool.make_dot import make_dot -else: - def make_dot(*args): pass - - -from pypy.translator.test import snippet as t - -class TypedPyrexTestCase(test.IntTestCase): - - def setUp(self): - self.space = test.objspace('flow') - - def make_cfunc(self, func, input_arg_types): - """ make a pyrex-generated cfunction from the given func """ - import inspect - try: - func = func.im_func - except AttributeError: - pass - name = func.func_name - funcgraph = self.space.build_flow(func) - funcgraph.source = inspect.getsource(func) - genpyrex = GenPyrex(funcgraph) - genpyrex.annotate(input_arg_types) - result = genpyrex.emitcode() - make_dot(funcgraph, udir, 'ps') - mod = make_module_from_pyxstring(name, udir, result) - return getattr(mod, name) - - def test_simple_func(self): - cfunc = self.make_cfunc(t.simple_func, [int]) - self.assertEquals(cfunc(1), 2) - - def test_while_func(self): - while_func = self.make_cfunc(t.while_func, [int]) - self.assertEquals(while_func(10), 55) - - def test_yast(self): - yast = self.make_cfunc(t.yast, [list]) - self.assertEquals(yast(range(12)), 66) - - def test_nested_whiles(self): - nested_whiles = self.make_cfunc(t.nested_whiles, [int, int]) - self.assertEquals(nested_whiles(111, 114), - '...!...!...!...!...!') - - def test_poor_man_range(self): - poor_man_range = self.make_cfunc(t.poor_man_range, [int]) - self.assertEquals(poor_man_range(10), range(10)) - - def test_time_waster(self): - time_waster = self.make_cfunc(t.time_waster, [int]) - self.assertEquals(time_waster(30), 3657) - -if __name__ == '__main__': - test.main() Modified: pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py Sun Oct 26 10:42:30 2003 @@ -1,9 +1,13 @@ import autopath from pypy.tool import test +from pypy.tool.udir import udir +from vpath.adapter.process import exec_cmd from vpath.local import Path -import os, sys +from pypy.translator.genpyrex import GenPyrex + +import os, sys, inspect import stdoutcapture debug = 0 @@ -82,3 +86,80 @@ except PyrexError, e: print >>sys.stderr, e cfile = pyxfile.newext('.c') + +def build_cfunc(func, simplify=1, dot=1, inputargtypes=None): + """ return a pyrex-generated cfunction from the given func. + + simplify is true -> perform simplifications on the flowgraph. + dot is true -> generate a dot-configuration file and postscript. + inputargtypes is a list (allowed to be empty) -> + then annotation will be performed before generating + dot/pyrex/c code. + + """ + try: func = func.im_func + except AttributeError: pass + + # build the flow graph + from pypy.objspace.flow import Space + space = Space() + name = func.func_name + funcgraph = space.build_flow(func) + + if dot: + from make_dot import DotGen + dotgen = DotGen() + subgraphs = [] + subgraphs.append(dotgen.getsubgraph(name, funcgraph)) + + # apply transformations + if simplify: + from pypy.translator.simplify import simplify_graph + simplify_graph(funcgraph) + name += '_s' + if dot: + subgraphs.append(dotgen.getsubgraph(name, funcgraph)) + + # get the pyrex generator + genpyrex = GenPyrex(funcgraph) + + # generate pyrex (without type inference) + + # apply type inference + if inputargtypes is not None: + genpyrex.annotate(inputargtypes) + name += '_t' + #a = Annotator(self.functiongraph) + #a.build_types(input_arg_types) + #a.simplify() + + pyxstring = genpyrex.emitcode() + #funcgraph.source = inspect.getsource(func) + mod = make_module_from_pyxstring(name, udir, pyxstring) + else: + pyxstring = genpyrex.emitcode() + mod = make_module_from_pyxstring(name, udir, pyxstring) + + if dot: + content = dotgen.getgraph("graph_"+func.func_name, subgraphs) + base = udir.join(name) + base.newext('dot').write(content) + base.newext('ps') + exec_cmd('dot -Tps -o %s %s' % ( + str(base.newext('ps')), + str(base.newext('.dot')))) + + + return getattr(mod, func.func_name) + +if __name__ == '__main__': + def f(x): + i = 0 + while i < x: + i = i + 1 + return i + + cf = make_cfunc(f, inputargtypes = [int]) + assert cf(3), 3 + + Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sun Oct 26 10:42:30 2003 @@ -11,14 +11,7 @@ debug = 0 class DotGen: - def __init__(self): - self.nodes = {} - self.counters = {} - def get_source(self, funcgraph): - self.blocks = {} - self.lines = [] - traverse(self, funcgraph) content = "\n".join(self.lines) return """ digraph test { @@ -27,12 +20,31 @@ %(content)s }""" % locals() + def getsubgraph(self, name, node): + self.blocks = {} + self.lines = [] + self.prefix = name + traverse(self, node) + content = "\n".join(self.lines) + return "subgraph %s {\n%s}" % (name, content) + + def getdigraph(self, name, node): + self.blocks = {} + self.lines = [] + traverse(self, node) + content = "\n".join(self.lines) + return "digraph %s {\n%s}" % (name, content) + + def getgraph(self, name, subgraphlist): + content = "\n".join(subgraphlist) + return "digraph %s {\n%s}" % (name, content) + def blockname(self, block): i = id(block) try: return self.blocks[i] except KeyError: - self.blocks[i] = name = "block%d" % len(self.blocks) + self.blocks[i] = name = "%s_%d" % (self.prefix, len(self.blocks)) return name def emit(self, line): @@ -42,7 +54,6 @@ style="dashed", color="black", dir="forward", - decorateP="", weight="5", ): d = locals() @@ -66,12 +77,12 @@ return def visit_FunctionGraph(self, funcgraph): - name = funcgraph.name + name = self.prefix # +'_'+funcgraph.name data = name if hasattr(funcgraph, 'source'): source = funcgraph.source.replace('"', "'") data += "\\n" + "\\l".join(source.split('\n')) - + self.emit_node(name, label=data, shape="box", fillcolor="green", style="filled") #('%(name)s [fillcolor="green", shape=box, label="%(data)s"];' % locals()) self.emit_edge(name, self.blockname(funcgraph.startblock), 'startblock') @@ -114,7 +125,7 @@ self.emit_edge(name, name2, label, style="dotted", color=color) -def make_dot(graph, storedir=None, target='ps'): +def make_dot(name, graph, storedir=None, target='ps'): from vpath.adapter.process import exec_cmd if storedir is None: From arigo at codespeak.net Sun Oct 26 15:05:30 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 26 Oct 2003 15:05:30 +0100 (MET) Subject: [pypy-svn] rev 2079 - in pypy/trunk/src/pypy/translator: . tool Message-ID: <20031026140530.F1E755ABC0@thoth.codespeak.net> Author: arigo Date: Sun Oct 26 15:05:30 2003 New Revision: 2079 Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py pypy/trunk/src/pypy/translator/translator.py Log: make_dot broken, this is a quick fix (not sure it was what holger intended) Modified: pypy/trunk/src/pypy/translator/tool/make_dot.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/make_dot.py (original) +++ pypy/trunk/src/pypy/translator/tool/make_dot.py Sun Oct 26 15:05:30 2003 @@ -31,6 +31,7 @@ def getdigraph(self, name, node): self.blocks = {} self.lines = [] + self.prefix = name traverse(self, node) content = "\n".join(self.lines) return "digraph %s {\n%s}" % (name, content) @@ -125,7 +126,7 @@ self.emit_edge(name, name2, label, style="dotted", color=color) -def make_dot(name, graph, storedir=None, target='ps'): +def make_dot(graphname, graph, storedir=None, target='ps'): from vpath.adapter.process import exec_cmd if storedir is None: @@ -135,7 +136,7 @@ name = graph.name dest = storedir.join('%s.dot' % name) #dest = storedir.dirname().join('%s.dot' % name) - source = dotgen.get_source(graph) + source = dotgen.getdigraph(graphname, graph) #print source dest.write(source) psdest = dest.newext(target) Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 26 15:05:30 2003 @@ -58,8 +58,7 @@ """Shows the control flow graph -- requires 'dot' and 'gv'.""" import os from pypy.translator.tool.make_dot import make_dot - from pypy.tool.udir import udir - dest = make_dot(self.flowgraph, udir, 'ps') + dest = make_dot('dummy', self.flowgraph) os.system('gv %s' % str(dest)) def simplify(self): From sanxiyn at codespeak.net Sun Oct 26 15:35:12 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 15:35:12 +0100 (MET) Subject: [pypy-svn] rev 2080 - in pypy/trunk/src/pypy/translator: test tool Message-ID: <20031026143512.AC8DA5ABC0@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 15:35:12 2003 New Revision: 2080 Modified: pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py Log: Moved a test at the end of buildpyxmodule to the place where it belongs. Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Sun Oct 26 15:35:12 2003 @@ -150,3 +150,9 @@ lst = lst[1:-1] i = i + 1 return i + +def int_id(x): + i = 0 + while i < x: + i = i + 1 + return i Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Sun Oct 26 15:35:12 2003 @@ -52,6 +52,10 @@ self.assertEquals(branch_id(1, 2, 3), 2) self.assertEquals(branch_id(0, 2, 3), 3) + def test_int_id(self): + int_id = self.build_cfunc(t.int_id) + self.assertEquals(int_id(3), 3) + def dont_test_attrs(self): attrs = self.build_cfunc(t.attrs) self.assertEquals(attrs(), 9) Modified: pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py Sun Oct 26 15:35:12 2003 @@ -1,4 +1,3 @@ - import autopath from pypy.tool import test from pypy.tool.udir import udir @@ -8,7 +7,7 @@ from pypy.translator.genpyrex import GenPyrex import os, sys, inspect -import stdoutcapture +from pypy.translator.tool import stdoutcapture debug = 0 @@ -107,7 +106,7 @@ funcgraph = space.build_flow(func) if dot: - from make_dot import DotGen + from pypy.translator.tool.make_dot import DotGen dotgen = DotGen() subgraphs = [] subgraphs.append(dotgen.getsubgraph(name, funcgraph)) @@ -149,17 +148,4 @@ str(base.newext('ps')), str(base.newext('.dot')))) - return getattr(mod, func.func_name) - -if __name__ == '__main__': - def f(x): - i = 0 - while i < x: - i = i + 1 - return i - - cf = make_cfunc(f, inputargtypes = [int]) - assert cf(3), 3 - - From sanxiyn at codespeak.net Sun Oct 26 16:02:22 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 16:02:22 +0100 (MET) Subject: [pypy-svn] rev 2081 - in pypy/trunk/src/pypy: . translator/tool Message-ID: <20031026150222.1F1635ABC0@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 16:02:21 2003 New Revision: 2081 Modified: pypy/trunk/src/pypy/TODO pypy/trunk/src/pypy/translator/tool/benchmark.py Log: TODO: mentions translator.py benchmark: quick fix. s/make_cfunc/build_cfunc/ Modified: pypy/trunk/src/pypy/TODO ============================================================================== --- pypy/trunk/src/pypy/TODO (original) +++ pypy/trunk/src/pypy/TODO Sun Oct 26 16:02:21 2003 @@ -23,8 +23,9 @@ Task: generate a nice dot-graph from the structure of PyPy -Task: integrate the code in translator, with a script that can be +Task: integrate the code in translator, with a script that can be invoked from the command-line to play with sample source code +(Note: partially done with translator.py.) Task: trash the standard unittest framework/enhance it Modified: pypy/trunk/src/pypy/translator/tool/benchmark.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/benchmark.py (original) +++ pypy/trunk/src/pypy/translator/tool/benchmark.py Sun Oct 26 16:02:21 2003 @@ -1,7 +1,7 @@ import autopath from pypy.tool import test from pypy.tool.udir import udir -from pypy.translator.test.test_pyrextrans import make_cfunc +from pypy.translator.tool.buildpyxmodule import build_cfunc from pypy.translator.test.test_cltrans import global_cl, make_cl_func def benchmark(func): @@ -9,7 +9,7 @@ func = func.im_func except AttributeError: pass - c_func = make_cfunc(func) + c_func = build_cfunc(func, dot=False) if global_cl: cl_func = make_cl_func(func) print "generated c-func for", func.func_name From sanxiyn at codespeak.net Sun Oct 26 16:21:15 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 16:21:15 +0100 (MET) Subject: [pypy-svn] rev 2082 - in pypy/trunk/src/pypy/translator: . test tool Message-ID: <20031026152115.672625B219@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 16:21:14 2003 New Revision: 2082 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: buildcl: What is test1018628.lisp? I need name! test_cltrans: simple_func, while_func from snippet gencl: binary_op sub, gt. two line fix. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 26 16:21:14 2003 @@ -31,11 +31,13 @@ print "; Op", self.opname, "is missing" binary_ops = { "add": "+", + "sub": "-", "inplace_add": "+", # weird, but it works "mod": "mod", "lt": "<", "le": "<=", "eq": "=", + "gt": ">", "getitem": "elt", } def op_binary(self, op): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sun Oct 26 16:21:14 2003 @@ -75,5 +75,11 @@ cl_sieve = make_cl_func(t.sieve_of_eratosthenes) self.assertEquals(cl_sieve(), 1028) + def test_easy(self): + f1 = make_cl_func(t.simple_func) + self.assertEquals(f1(1), 2) + f2 = make_cl_func(t.while_func) + self.assertEquals(f2(10), 55) + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Sun Oct 26 16:21:14 2003 @@ -21,10 +21,7 @@ gen = GenCL(fun) out = gen.emitcode() i = 1 - fpath = path.join("test%d.lisp" % i) - while fpath.exists(): - fpath = path.join("test%d.lisp" % i) - i += 1 + fpath = path.join("%s.lisp" % fun.name) def _(*args): fpath.write(out) fp = file(str(fpath), "a") From arigo at codespeak.net Sun Oct 26 16:35:29 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 26 Oct 2003 16:35:29 +0100 (MET) Subject: [pypy-svn] rev 2083 - in pypy/trunk/src/pypy/translator: . tool Message-ID: <20031026153529.8C2495B22D@thoth.codespeak.net> Author: arigo Date: Sun Oct 26 16:35:28 2003 New Revision: 2083 Modified: pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py pypy/trunk/src/pypy/translator/translator.py Log: Fix in the .dot graph generation Modified: pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildpyxmodule.py Sun Oct 26 16:35:28 2003 @@ -116,8 +116,6 @@ from pypy.translator.simplify import simplify_graph simplify_graph(funcgraph) name += '_s' - if dot: - subgraphs.append(dotgen.getsubgraph(name, funcgraph)) # get the pyrex generator genpyrex = GenPyrex(funcgraph) @@ -140,6 +138,8 @@ mod = make_module_from_pyxstring(name, udir, pyxstring) if dot: + if name != func.func_name: # if some transformations have been done + subgraphs.append(dotgen.getsubgraph(name, funcgraph)) content = dotgen.getgraph("graph_"+func.func_name, subgraphs) base = udir.join(name) base.newext('dot').write(content) Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 26 16:35:28 2003 @@ -82,10 +82,12 @@ """ return self.py_source - def pyrex(self): + def pyrex(self, input_arg_types=None): """Returns Pyrex translation.""" g = GenPyrex(self.flowgraph) - if self.annotator: + if input_arg_types is not None: + g.annotate(input_arg_types) + elif self.annotator: g.setannotator(self.annotator) return g.emitcode() From sanxiyn at codespeak.net Sun Oct 26 18:39:25 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 18:39:25 +0100 (MET) Subject: [pypy-svn] rev 2084 - in pypy/trunk/src/pypy/translator: . test tool Message-ID: <20031026173925.490F15ABC0@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 18:39:24 2003 New Revision: 2084 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: gencl: emit_typecase! e.g. emit + for int addition, concatenate for str addition, conditional expression for unknown-type addition. buildcl: now one can pass argument types to make_cl_func. readlisp hack to handle string. annotation: str + str = str. snippet: all-time classic hello world. test_cltrans: tests for above changes. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Sun Oct 26 18:39:24 2003 @@ -100,8 +100,10 @@ arg1,arg2 = op.args type1 = annotations.get_type(arg1) type2 = annotations.get_type(arg2) - if type1 == int and type2 == int: + if type1 is int and type2 is int: annotations.set_type(op.result,int) + if type1 is str and type2 is str: + annotations.set_type(op.result, str) consider_op_sub = consider_op_add consider_op_and_ = consider_op_add # don't forget the trailing '_' Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 26 18:39:24 2003 @@ -30,7 +30,7 @@ print ";", self.op print "; Op", self.opname, "is missing" binary_ops = { - "add": "+", + #"add": "+", "sub": "-", "inplace_add": "+", # weird, but it works "mod": "mod", @@ -45,17 +45,35 @@ result, (arg1, arg2) = self.result, self.args cl_op = self.binary_ops[op] print "(setq", s(result), "(", cl_op, s(arg1), s(arg2), "))" + def op_add(self): + s = self.str + result, (arg1, arg2) = self.result, self.args + print "(setq", s(result), + table = { + (int, int): "(+ %s %s)", + (str, str): "(concatenate 'string %s %s)", + } + self.gen.emit_typecase(table, arg1, arg2) + print ")" def op_not_(self): s = self.str result, (arg1,) = self.result, self.args print "(setq", s(result), "(not" - self.gen.emit_truth_test(arg1) + table = { + (bool,): "(not %s)", + (int,): "(zerop %s)", + } + self.gen.emit_typecase(table, arg1) print "))" def op_is_true(self): s = self.str result, (arg1,) = self.result, self.args print "(setq", s(result) - self.gen.emit_truth_test(arg1) + table = { + (bool,): "%s", + (int,): "(not (zerop %s))", + } + self.gen.emit_typecase(table, arg1) print ")" def op_alloc_and_set(self): s = self.str @@ -96,6 +114,11 @@ return str(val) elif val is None: return "nil" + elif isinstance(val, str): + val.replace("\\", "\\\\") + val.replace("\"", "\\\"") + val = '"' + val + '"' + return val else: return "#<" def emitcode(self): @@ -177,21 +200,27 @@ print var, init, print ")" self.emit_jump(link.target) - def emit_truth_test(self, obj): + typemap = { + bool: "boolean", + int: "fixnum", + type(''): "string", # hack, 'str' is in the namespace! + } + def emit_typecase(self, table, *args): + argreprs = tuple(map(self.str, args)) annset = self.ann.annotated[self.cur_block] - tp = annset.get_type(obj) - s = self.str - if tp is bool: - print s(obj) - elif tp is int: - print "(not (zerop", s(obj), "))" + argtypes = tuple(map(annset.get_type, args)) + if argtypes in table: + trans = table[argtypes] + print trans % argreprs else: - print self.template(s(obj), [ - "(typecase %", - "(boolean %)", - "(fixnum (not (zerop %)))", - ")"]) - def template(self, sub, seq): - def _(x): - return x.replace("%", sub) - return "\n".join(map(_, seq)) + print "(cond" + for argtypes in table: + print "((and", + for tp, s in zip(argtypes, argreprs): + cl_tp = "'" + self.typemap[tp] + print "(typep", s, cl_tp, ")", + print ")" + trans = table[argtypes] + print trans % argreprs, + print ")" + print ")" Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Sun Oct 26 18:39:24 2003 @@ -156,3 +156,7 @@ while i < x: i = i + 1 return i + +def greet(target): + hello = "hello" + return hello + target Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sun Oct 26 18:39:24 2003 @@ -28,9 +28,9 @@ global_cl = get_cl() -def make_cl_func(func): +def make_cl_func(func, argtypes=[]): from pypy.translator.tool.buildcl import _make_cl_func - return _make_cl_func(func, global_cl, udir) + return _make_cl_func(func, global_cl, udir, argtypes) from pypy.translator.test import snippet as t @@ -76,10 +76,22 @@ self.assertEquals(cl_sieve(), 1028) def test_easy(self): + # These are the Pyrex tests which were easy to adopt. f1 = make_cl_func(t.simple_func) self.assertEquals(f1(1), 2) f2 = make_cl_func(t.while_func) self.assertEquals(f2(10), 55) + f3 = make_cl_func(t.simple_id) + self.assertEquals(f3(9), 9) + f4 = make_cl_func(t.branch_id) + self.assertEquals(f4(1, 2, 3), 2) + self.assertEquals(f4(0, 2, 3), 3) + f5 = make_cl_func(t.int_id) + self.assertEquals(f5(3), 3) + + def test_string(self): + cl_greet = make_cl_func(t.greet, [str]) + self.assertEquals(cl_greet("world"), "helloworld") if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Sun Oct 26 18:39:24 2003 @@ -7,18 +7,21 @@ from vpath.adapter.process import exec_cmd def readlisp(s): - # Return bool and int only + # Return bool/int/str s = s.strip() if s == "T": return True elif s == "NIL": return False + elif s[0] == '"': + return s[1:-1] else: return int(s) -def _make_cl_func(func, cl, path): +def _make_cl_func(func, cl, path, argtypes=[]): fun = FlowObjSpace().build_flow(func) gen = GenCL(fun) + gen.annotate(argtypes) out = gen.emitcode() i = 1 fpath = path.join("%s.lisp" % fun.name) From sanxiyn at codespeak.net Sun Oct 26 19:41:08 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Sun, 26 Oct 2003 19:41:08 +0100 (MET) Subject: [pypy-svn] rev 2085 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031026184108.7CE875A61E@thoth.codespeak.net> Author: sanxiyn Date: Sun Oct 26 19:41:07 2003 New Revision: 2085 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/translator.py Log: gencl: one line fix -- op_and_ to logand. test_cltrans: more PyrexTestCase-originated tests translator: import snippet as module so that you can dir() to see what are available. my_bool and my_range's already in snippet. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Sun Oct 26 19:41:07 2003 @@ -38,6 +38,7 @@ "le": "<=", "eq": "=", "gt": ">", + "and_": "logand", "getitem": "elt", } def op_binary(self, op): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Sun Oct 26 19:41:07 2003 @@ -88,10 +88,17 @@ self.assertEquals(f4(0, 2, 3), 3) f5 = make_cl_func(t.int_id) self.assertEquals(f5(3), 3) + f6 = make_cl_func(t.time_waster) + self.assertEquals(f6(30), 3657) def test_string(self): cl_greet = make_cl_func(t.greet, [str]) self.assertEquals(cl_greet("world"), "helloworld") + def test_string2(self): + cl_stringmaker = make_cl_func(t.nested_whiles) + self.assertEquals(cl_stringmaker(111, 114), + "...!...!...!...!...!") + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Sun Oct 26 19:41:07 2003 @@ -21,11 +21,11 @@ f = t.compile() # pyrex compilation assert f(arg) == func(arg) -Some functions will be provided for the benefit of interactive testing. -Currently there are my_bool and my_range, plus the ones defined in -test.snippet. +Some functions are provided for the benefit of interactive testing. +Try dir(test) for list of current snippets. """ + import autopath from pypy.objspace.flow.model import * @@ -111,19 +111,7 @@ if __name__ == '__main__': - from pypy.translator.test.snippet import * - - def my_bool(x): - return not not x - - def my_range(i): - lst = [] - while i > 0: - i = i - 1 - lst.append(i) - lst.reverse() - return lst - + from pypy.translator.test import snippet as test print __doc__ # 2.3 specific -- sanxiyn From rocco at codespeak.net Sun Oct 26 20:42:32 2003 From: rocco at codespeak.net (rocco at codespeak.net) Date: Sun, 26 Oct 2003 20:42:32 +0100 (MET) Subject: [pypy-svn] rev 2086 - in pypy/trunk/src/pypy: interpreter module module/test Message-ID: <20031026194232.25CCA5A61E@thoth.codespeak.net> Author: rocco Date: Sun Oct 26 20:42:31 2003 New Revision: 2086 Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py pypy/trunk/src/pypy/module/sysmodule.py pypy/trunk/src/pypy/module/test/test_sysmodule.py Log: Add builtin_module_names attribute to sys, and adjust module loading to populate it. Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/baseobjspace.py (original) +++ pypy/trunk/src/pypy/interpreter/baseobjspace.py Sun Oct 26 20:42:31 2003 @@ -53,14 +53,14 @@ # an almost functional 'builtin' attribute on the space self.builtin._initcompiledbuiltins() - self.sys._setmodule(self.w_builtin) + self.sys._setbuiltinmodule(self.w_builtin) def make_sys(self): assert not hasattr(self, 'sys') from pypy.module import sysmodule self.sys = sysmodule.Sys(self) self.w_sys = self.wrap(self.sys) - self.sys._setmodule(self.w_sys) + self.sys._setbuiltinmodule(self.w_sys) # XXX get rid of this. def get_builtin_module(self, name): Modified: pypy/trunk/src/pypy/module/sysmodule.py ============================================================================== --- pypy/trunk/src/pypy/module/sysmodule.py (original) +++ pypy/trunk/src/pypy/module/sysmodule.py Sun Oct 26 20:42:31 2003 @@ -19,6 +19,7 @@ appdir = os.path.join(pypydir, 'pypy', 'appspace') self.w_path = space.newlist([appdir] + [p for p in cpy_sys.path if p!= pypydir]) self.w_modules = space.newdict([]) + self.w_builtin_module_names = space.newlist([]) ExtModule.__init__(self, space) stdout = cpy_sys.stdout @@ -30,6 +31,15 @@ w_name = self.space.getattr(w_module, self.space.wrap('__name__')) self.space.setitem(self.w_modules, w_name, w_module) + def _setbuiltinmodule(self, w_module): + """ put a module into modules list and builtin_module_names """ + w_name = self.space.getattr(w_module, self.space.wrap('__name__')) + append = self.space.getattr(self.w_builtin_module_names, + self.space.wrap('append')) + self.space.call(append, self.space.newtuple((w_name,)), + self.space.newdict([])) + self.space.setitem(self.w_modules, w_name, w_module) + def displayhook(self, w_x): space = self.space w = space.wrap Modified: pypy/trunk/src/pypy/module/test/test_sysmodule.py ============================================================================== --- pypy/trunk/src/pypy/module/test/test_sysmodule.py (original) +++ pypy/trunk/src/pypy/module/test/test_sysmodule.py Sun Oct 26 20:42:31 2003 @@ -25,6 +25,33 @@ def test_name_exists(self): import sys self.failUnless(hasattr(sys, '__name__'), "sys.__name__ gone missing") + def test_builtin_module_names_exists(self): + import sys + self.failUnless(hasattr(sys, 'builtin_module_names'), + "sys.builtin_module_names gone missing") + def test_sys_in_modules(self): + import sys + modules = sys.modules + self.failUnless('sys' in modules, "An entry for sys " + "is not in sys.modules.") + sys2 = sys.modules['sys'] + self.failUnless(sys is sys2, "import sys is not sys.modules[sys].") + def test_builtin_in_modules(self): + import sys + modules = sys.modules + self.failUnless('__builtin__' in modules, "An entry for __builtin__ " + "is not in sys.modules.") + import __builtin__ + builtin2 = sys.modules['__builtin__'] + self.failUnless(__builtin__ is builtin2, "import __builtin__ " + "is not sys.modules[__builtin__].") + def test_builtin_module_names(self): + import sys + names = sys.builtin_module_names + self.failUnless('sys' in names, + "sys is not listed as a builtin module.") + self.failUnless('__builtin__' in names, + "__builtin__ is not listed as a builtin module.") if __name__ == '__main__': test.main() From rocco at codespeak.net Sun Oct 26 20:54:54 2003 From: rocco at codespeak.net (rocco at codespeak.net) Date: Sun, 26 Oct 2003 20:54:54 +0100 (MET) Subject: [pypy-svn] rev 2087 - in pypy/trunk/src/pypy: interpreter module Message-ID: <20031026195454.597A05A61E@thoth.codespeak.net> Author: rocco Date: Sun Oct 26 20:54:53 2003 New Revision: 2087 Added: pypy/trunk/src/pypy/module/os_modules.py (contents, props changed) Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py pypy/trunk/src/pypy/module/__init__.py Log: Add facilities for dynamic loading of builtin modules. Meta information about the modules provided by the pypy/modules directory is now encoded in pypy.modules.__init__. A loader function in BaseObjectSpace reads this information and dynamically loads the builtin modules. There are facilities to alter module loading based on object space and other things such as platform. The sys and __builtin__ modules are special cased out of the loading proceedure. Also included is a simple wrapper to load the platform specific mdules which do the work of the os module. Modified: pypy/trunk/src/pypy/interpreter/baseobjspace.py ============================================================================== --- pypy/trunk/src/pypy/interpreter/baseobjspace.py (original) +++ pypy/trunk/src/pypy/interpreter/baseobjspace.py Sun Oct 26 20:54:53 2003 @@ -1,6 +1,7 @@ from pypy.interpreter.executioncontext import ExecutionContext from pypy.interpreter.error import OperationError from pypy.interpreter.miscutils import Stack, getthreadlocals +import pypy.module __all__ = ['ObjSpace', 'OperationError', 'NoValue'] @@ -55,6 +56,9 @@ self.sys._setbuiltinmodule(self.w_builtin) + #Now we can load all the builtin (interpreter level) modules. + self.make_builtin_modules() + def make_sys(self): assert not hasattr(self, 'sys') from pypy.module import sysmodule @@ -62,6 +66,17 @@ self.w_sys = self.wrap(self.sys) self.sys._setbuiltinmodule(self.w_sys) + def make_builtin_modules(self): + for filename, classname, spaces in pypy.module._builtin_modules: + if self.__class__.__name__ not in spaces: + continue + mod = __import__("pypy.module.%s"%filename, globals(), locals(), + [classname]) + klass = getattr(mod, classname) + module = klass(self) + if module is not None: + self.sys._setbuiltinmodule(self.wrap(module)) + # XXX get rid of this. def get_builtin_module(self, name): if name == '__builtin__': Modified: pypy/trunk/src/pypy/module/__init__.py ============================================================================== --- pypy/trunk/src/pypy/module/__init__.py (original) +++ pypy/trunk/src/pypy/module/__init__.py Sun Oct 26 20:54:53 2003 @@ -0,0 +1,31 @@ + +# ObjSpaces that implement the standard Python semantics +_std_spaces = ['TrivialObjSpace','StdObjSpace'] + +_all_spaces = _std_spaces + ['FlowObjSpace'] + +# The following item ia a list of +# (filename, classname, [applicable spaces]) tuples describing the +# builtin modules (pypy.interpreter.extmodule.ExtModule) +# availible in the pypy.module directory. + +# classname should be a classname of a callable in 'filename' that returns +# an unwrapped builtin module instance (pypy.interpreter.extmodule.ExtModule +# instance) - it may return an unwrapped None if the builtin module is not +# to be loaded. (e.g. this is the wrong platform.) + +#Note: the builtin and sys modules are special cased for bootstrapping reasons. + +# But this is an example of what the list would look like: + +##_builtin_and_sys = [('builtin','__builtin__',_std_spaces), +## ('sysmodule','Sys',_std_spaces), +## ] + +_builtin_modules = [('os_modules','Posix',_std_spaces), + ('os_modules','Nt',_std_spaces), + ('os_modules','Os2',_std_spaces), + ('os_modules','Mac',_std_spaces), + ('os_modules','Ce',_std_spaces), + ('os_modules','Riscos',_std_spaces), + ] Added: pypy/trunk/src/pypy/module/os_modules.py ============================================================================== --- (empty file) +++ pypy/trunk/src/pypy/module/os_modules.py Sun Oct 26 20:54:53 2003 @@ -0,0 +1,61 @@ +"""Bootstrap the builtin modules which make up sys: +posix, nt, os2, mac, ce, etc. + +""" +import sys +import os + +from pypy.interpreter.extmodule import ExtModule + +_names = sys.builtin_module_names + +# We use the second (metaclassish) meaning of type to construct a subclass +# of ExtModule - can't modify some attributes (like __doc__) after class +# creation, and wrapping code does not properly look at instance variables. +def Posix(space): + if 'posix' in _names: + import posix + _posix = type('posix', (ExtModule,), posix.__dict__) + return _posix(space) + else: + return None + +def Nt(space): + if 'nt' in _names: + import nt + _nt = type('nt', (ExtModule,), nt.__dict__) + return _nt(space) + else: + return None + +def Os2(space): + if 'os2' in _names: + import os2 + _os2 = type('os2', (ExtModule,), os2.__dict__) + return _os2(space) + else: + return None + +def Mac(space): + if 'mac' in _names: + import mac + _mac = type('mac', (ExtModule,), mac.__dict__) + return _mac(space) + else: + return None + +def Ce(space): + if 'ce' in _names: + import ce + _ce = type('ce', (ExtModule,), ce.__dict__) + return _ce(space) + else: + return None + +def Riscos(space): + if 'riscos' in _names: + import riscos + _riscos = type('riscos', (ExtModule,), riscos.__dict__) + return _riscos(space) + else: + return None From rocco at codespeak.net Sun Oct 26 21:08:08 2003 From: rocco at codespeak.net (rocco at codespeak.net) Date: Sun, 26 Oct 2003 21:08:08 +0100 (MET) Subject: [pypy-svn] rev 2088 - pypy/trunk/src/pypy/module Message-ID: <20031026200808.4F2965A61E@thoth.codespeak.net> Author: rocco Date: Sun Oct 26 21:08:07 2003 New Revision: 2088 Modified: pypy/trunk/src/pypy/module/builtin.py Log: Add a dir() function to builtins. This is modeled directly after CPython's dir function. It is currently incomplete. dir() with no args doesn't work yet, and trying to pull dir() of an object exposes some problem with the builtin isinstance() method. I don't have time to track down the errors at this point, but I'm committing it anyway, as it is unlikely to break anything which is currently working. Modified: pypy/trunk/src/pypy/module/builtin.py ============================================================================== --- pypy/trunk/src/pypy/module/builtin.py (original) +++ pypy/trunk/src/pypy/module/builtin.py Sun Oct 26 21:08:07 2003 @@ -383,6 +383,90 @@ except AttributeError: return False + def app_dir(self, *args): + """dir([object]) -> list of strings + + Return an alphabetized list of names comprising (some of) the attributes + of the given object, and of attributes reachable from it: + + No argument: the names in the current scope. + Module object: the module attributes. + Type or class object: its attributes, and recursively the attributes of + its bases. + Otherwise: its attributes, its class's attributes, and recursively the + attributes of its class's base classes. + """ + import types + def _classdir(klass): + """Return a dict of the accessible attributes of class/type klass. + + This includes all attributes of klass and all of the + base classes recursively. + + The values of this dict have no meaning - only the keys have + meaning. + """ + Dict = {} + try: + Dict.update(klass.__dict__) + except AttributeError: pass + try: + # XXX - Use of .__mro__ would be suggested, if the existance + # of that attribute could be guarranted. + bases = klass.__bases__ + except AttributeError: pass + try: + #Note that since we are only interested in the keys, + # the order we merge classes is unimportant + for base in bases: + Dict.update(_classdir(base)) + except TypeError: pass + #End _classdir + + if len(args) > 1: + raise TypeError("dir expected at most 1 arguments, got %d" + % len(args)) + if len(args) == 0: + return self._getlocalkeys() + + obj = args[0] + + if isinstance(obj, types.ModuleType): + try: + return module.__dict__.keys() + except AttributeError: + return [] + + elif isinstance(obj, (types.TypeType, types.ClassType)): + #Don't look at __class__, as metaclass methods would be confusing. + return _classdir(obj).keys() + + else: #(regular item) + Dict = {} + try: + Dict.update(obj.__dict__) + except AttributeError: pass + try: + Dict.update(_classdir(obj.__class__)) + except AttributeError: pass + + ## Comment from object.c: + ## /* Merge in __members__ and __methods__ (if any). + ## XXX Would like this to go away someday; for now, it's + ## XXX needed to get at im_self etc of method objects. */ + for attr in ['__members__','__methods__']: + try: + for item in getattr(obj, attr): + if isinstance(item, types.StringTypes): + Dict[item] = None + except (AttributeError, TypeError): pass + + return Dict.keys() + + def _getlocalkeys(self): + """Return the local keys of the currenly executing frame.""" + raise NotImplementedError + # source code for the builtin xrange-class xrange_appsource = """if 1: class xrange: From arigo at codespeak.net Sun Oct 26 21:33:28 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Sun, 26 Oct 2003 21:33:28 +0100 (MET) Subject: [pypy-svn] rev 2089 - pypy/trunk/src/pypy/module Message-ID: <20031026203328.5E7195A61E@thoth.codespeak.net> Author: arigo Date: Sun Oct 26 21:33:27 2003 New Revision: 2089 Modified: pypy/trunk/src/pypy/module/builtin.py Log: Couple of bug fixes Modified: pypy/trunk/src/pypy/module/builtin.py ============================================================================== --- pypy/trunk/src/pypy/module/builtin.py (original) +++ pypy/trunk/src/pypy/module/builtin.py Sun Oct 26 21:33:27 2003 @@ -414,13 +414,15 @@ # XXX - Use of .__mro__ would be suggested, if the existance # of that attribute could be guarranted. bases = klass.__bases__ - except AttributeError: pass - try: - #Note that since we are only interested in the keys, - # the order we merge classes is unimportant - for base in bases: - Dict.update(_classdir(base)) - except TypeError: pass + except AttributeError: pass + else: + try: + #Note that since we are only interested in the keys, + # the order we merge classes is unimportant + for base in bases: + Dict.update(_classdir(base)) + except TypeError: pass + return Dict #End _classdir if len(args) > 1: From hpk at codespeak.net Sun Oct 26 22:26:28 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Sun, 26 Oct 2003 22:26:28 +0100 (MET) Subject: [pypy-svn] rev 2091 - pypy/trunk/doc/sprintinfo Message-ID: <20031026212628.0BF325A0CD@thoth.codespeak.net> Author: hpk Date: Sun Oct 26 22:26:27 2003 New Revision: 2091 Added: pypy/trunk/doc/sprintinfo/AmsterdamAnnouncement.txt pypy/trunk/doc/sprintinfo/BerlinReport.txt Log: checked in the Amsterdam announcement and a BerlinReport for the records. As always, if anyone wants to add/modify go ahead. Added: pypy/trunk/doc/sprintinfo/AmsterdamAnnouncement.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/sprintinfo/AmsterdamAnnouncement.txt Sun Oct 26 22:26:27 2003 @@ -0,0 +1,124 @@ +PyPy Sprint announcement & news from the project +================================================ + +We are coming close to a first experimental release of PyPy, +a more flexible Python implementation written in Python. +The sprint to make this happen will take place in Amsterdam, +a city known to be reachable by cheap flights :-) + +This is 1) the announcement for the sprint; + 2) news about the current state of PyPy; + 3) some words about a proposal we recently submitted + to the European Union. + + +Amsterdam Sprint Details +------------------------ + +The Sprint will take place from + + the 14th of December to the 21st of December at the + + "Vrije Universiteit in Amsterdam", 14th-21th Dec 2003. + +thanks to Etienne Posthumus, who helps us to organize the event. The +main goal will be a complete C translation of PyPy, probably still using +a hacked Pyrex-variant as an intermediate layer and using CPython's +runtime. We also plan to work on some fun frontends to PyPy like one +based on pygame or a web browser to visualize interactions between +interpreter and objectspace. + +If you want to participate on the sprint, please subscribe here + + http://codespeak.net/mailman/listinfo/pypy-sprint + +and list yourself on this wiki page + + http://codespeak.net/moin/pypy/moin.cgi/AmsterdamSprint + +where you will also find more information as the sprint date +approaches. If you are just interested but don't know if you +come then only subscribe to the mailing list. + + +State of the PyPy project +-------------------------- + +PyPy works pretty well but still on top of CPython. The double +interpretation penalty makes it - as expected - incredibly slow :-) In +the Berlin sprint we have thus started to work on the "translation" +part, i.e. how this code should be translated into C. We can now +translate simple functions to C-like code including some type +annotations. For convenience, we are reusing a modified subset of Pyrex +to generate the low-level C code. Thanks to Seo (who joined the project +from South-Korea) we also have a lisp-backend to fuel the endless c.l.py +threads about python versus lisp :-) + +The goal of the next sprint is to complete this work so that we can +translate the complete PyPy source into a huge Pyrex module, and then a +big CPython extension module. True, the result is not independent from +CPython, as it runs reusing its runtime environment. But it's probably +an interesting enough state to make a public release from. + +The translation is done by generating a control flow of functions by +means of abstract interpretation. IOW, we run the PyPy interpreter with +a custom object space ("flowobjspace") which generates a control flow +graph (including the elementary operations) which is then used to +generate low-level code for backends. We also have preliminary type +inference on the graphs, which can be used by the Pyrex generator to +emit some C type declarations. + +Writing transformations and analysis of these graphs and displaying them +with GraphViz's 'dot' is great fun! We certainly have a greater need +than ever for graphical interactive tools to see, understand and debug +all these graph manipulations and run tests of them. Currently it is a +bit difficult to write a test that checks that a transformed graph +"looks right"! + +What we expect from the Amsterdam sprint is thus: + +- a big not-too-slow "cpypy.so" extension module for CPython, where at + least integer arithmetic is done efficiently + +- interactive tools to display and debug and test PyPy, visualizing + control flow, call-graphs and state models. + +- improving and rewriting our testing tools to give us more control over + the testing process, and to allow more interactive testing sessions. + + +Other interesting News +---------------------- + +Before mid October, we also had a quite different Sprint. It was an +approximately 10-day effort towards submitting a proposal to the EU. If +it is accepted we will have resources to fund some developers working +full- or parttime on the project. However, our "sprint driven +development" will continue to play the central role for development of +PyPy. + +There are especially two technical sections of the proposal which you +might find interesting to read: + + "Scientific and technological objectives": + http://codespeak.net/pypy/index.cgi?doc/funding/B1.0 + + "Detailed implementation plan" + http://codespeak.net/pypy/index.cgi?doc/funding/B6.0 + +Maybe you want to read the whole proposal for other reasons, too, like +making a EU project of your own or competing with us. Actually, +with our sprints there is usually a lot of room for cooperation :-) +Anyway, here is the PDF-url: + + http://codespeak.net/svn/pypy/trunk/doc/funding/proposal/part_b.pdf + +Everybody who thinks that he/she could help on the project is +invited to join! Btw, the latest discussions about our sprint +goals usually take place on the pypy-dev list: + + http://codespeak.net/mailman/listinfo/pypy-dev + +have fun, + + Armin & Holger Added: pypy/trunk/doc/sprintinfo/BerlinReport.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/sprintinfo/BerlinReport.txt Sun Oct 26 22:26:27 2003 @@ -0,0 +1,146 @@ +a sprint report (actually a mail from Holger Krekel on pypy-dev) + +Hi Florian, + +[Florian Schulze Sat, Oct 04, 2003 at 10:34:25PM +0200] +> Hi! +> +> How well did the sprint work out? +> +> I have seen that there is some pyrex code generation now and there are +> tests, but what where the results in this area during the sprint? +> +> Just a very short mail with some information would be grately +> appreciated. + +Here is my take. Other mileages may vary so excuse me if i miss anything. + +On Monday morning we made a few design decision which led to the +implementation of the following abstractions in the next two days: + +- a new FlowObjSpace which does abstract interpretation + plus some very nice tricks (which we came up with during a + long-winded discussion in a restaurant :-) to construct + a FunctionGraph. This functiongraph (fully) represents the abstract + or symbolic execution of a function. e.g. for this function:: + + def while_func(i): + total = 0 + while i > 0: + total = total + i + i = i - 1 + return total + + the following graph is generated (shown here in an slightly + optimized version): + + http://codespeak.net/~hpk/while_func.ps + + +- the pyrex-translator also takes this objectmodel (in flowmodel.py) and + generates Pyrex-Code from it. The generated code looks pretty low-level + but this is expected as we eventually want to generate C or assembly + directly. For the above function the following pyrex-source code is + generated (again with some easy optimizations applied):: + + def while_func(object v413): + v419, v420 = v413, 0 + cinline "Label1:" + v422 = v419 > 0 + if v422: + v424 = v420 + v419 + v425 = v419 - 1 + v419, v420 = v425, v424 + cinline "goto Label1;" + else: + return v420 + + btw, the 'cinline' statement is a hack to pyrex and allows to insert + arbitrary C-code. An objectspace cannot really identify loops + and so we need "goto". We consider goto to be useful unless you have + to type and understand them manually :-) + +- translator/annotation.py also takes the flowmodel and applies a + new technique for type inference: it uses space-operations to + note 'assertions' about variables and relaxes those assertions + during analysis of the flowgraph. IOW we didn't come up with + yet another type-system (which is the classical approach) but + reuse the notion of "space-operations" which we had from the beginning + of the project. Btw, Armin thinks that this type-inference algorithm + is worth a scientific paper but more about this either later and/or + from him. +- we adapted Jonathan David Riehl's Python-Parser (written completly + in python using its own "rex"-approach) and adapted it so that + it will be a drop-in replacement for CPython's current parser + (living the boring life of a C-extension). Actually Jonathan's + larger 'basil' project is now in the codespeak-repository and + we can easily link it into PyPy or branch off it if neccessary. + +So alltogether the Flowgraph/Functiongraph/flowmodel (there is no +completly fixed terminology yet) is the central point for several +independent algorithms that - if combined - eventually produce typed C-code. + +To sum it up there are the following abstractions: + +interpreter interpreting bytecode, dispatching operations on objects to + +objectspace implementing operations on boxed objects + +stdobjspace a concrete space implementing python's standard type system + +flowobjspace a conrete space performing abstract/symbolic interpretation and + producing a (bytecode-indepedent) flowmodel of execution + +annotator analysing the flowmodel to infer types. + +genpyrex taking the (annotated) flowmodel to generate pyrex-code + +pyrex translating into an C-extension + +As a consequence the former Ann(otation)Space has been ripped apart +(partly into flowobjspace) and is gone now. Long live the flowspace. + +A really nice property of the above abstractions is that they allow +development and testing *independently* from one another which was +of invaluable help. Thanks here go to Greg Ewing for Pyrex and sorry +for the evil cinline-hack :-) + +Anybody interested in helping with the next steps might look into +the TODO file in the pypy-root directory. We also have discussed +yesterday evening a refactored flowmodel which we want to employ +soon. + +Big thanks go to Tomek Meka and Christian Tismer for organizing the +sprint and Stephan Diehl and Dinu Gherman for their help in various +organizational areas. And especially to Jonathan David Riehl who +made it from Chicago. We hope he can stay with us more often. And +here is a (hopefully complete) list of people who attended and made +all of the above possible: + + Armin Rigo + Christian Tismer + Dinu Gherman + Guenter Jantzen + Jonathan David Riehl + Samuele Pedroni + Stephan Diehl + Tomek Meka + and shame on me if i forgot anyone (i am tired ...) + +And of course many many thanks to Laura Creighton (AB Strakt), +Nicolas Chauvat (Logilab) and Alistair Burt (DFKI) who tried hard to +work with us on EU-funding-issues. Actually we came up with a nice technical +2-year plan but a lot of business issues still need to be resolved +and fixed. Let's hope that the EU-funding effort is as successful as +our coding sprints this year has been. Ah yes, the next sprint we hope +to do mid-december probably in Amsterdam. If all goes well (some more +people helping between the sprints that is :-) we might even do a first +public release with PyPy prototypically running as a C-extension to CPython. + +That's it for now from me. (sprinters: Please correct/fix any issues i +misrepresented) + +cheers, + + holger + From sanxiyn at codespeak.net Mon Oct 27 12:40:16 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Mon, 27 Oct 2003 12:40:16 +0100 (MET) Subject: [pypy-svn] rev 2092 - in pypy/trunk/src/pypy/translator: . test tool Message-ID: <20031027114016.8CA495B066@thoth.codespeak.net> Author: sanxiyn Date: Mon Oct 27 12:40:15 2003 New Revision: 2092 Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/genpyrex.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: trivia Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Mon Oct 27 12:40:15 2003 @@ -49,7 +49,7 @@ def op_add(self): s = self.str result, (arg1, arg2) = self.result, self.args - print "(setq", s(result), + print "(setq", s(result) table = { (int, int): "(+ %s %s)", (str, str): "(concatenate 'string %s %s)", Modified: pypy/trunk/src/pypy/translator/genpyrex.py ============================================================================== --- pypy/trunk/src/pypy/translator/genpyrex.py (original) +++ pypy/trunk/src/pypy/translator/genpyrex.py Mon Oct 27 12:40:15 2003 @@ -54,11 +54,11 @@ lines = [] args = self.argnames lines.append("try:") - lines.append(" _nextval = %s.next()" % args[0]) + lines.append(" _nextval = %s.next()" % args[0]) lines.append("except StopIteration:") - lines.append(" %s = None, 0" % self.resultname) + lines.append(" %s = None, 0" % self.resultname) lines.append("else:") - lines.append(" %s = _nextval, 1" % self.resultname) + lines.append(" %s = _nextval, 1" % self.resultname) return "\n".join(lines) def op_getitem(self): Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Mon Oct 27 12:40:15 2003 @@ -42,13 +42,10 @@ raise (test.TestSkip, "Common Lisp neither configured nor detected.") - def test_if_bool(self): + def test_if(self): cl_if = make_cl_func(t.if_then_else) self.assertEquals(cl_if(True, 50, 100), 50) self.assertEquals(cl_if(False, 50, 100), 100) - - def test_if_int(self): - cl_if = make_cl_func(t.if_then_else) self.assertEquals(cl_if(0, 50, 100), 100) self.assertEquals(cl_if(1, 50, 100), 50) @@ -94,8 +91,6 @@ def test_string(self): cl_greet = make_cl_func(t.greet, [str]) self.assertEquals(cl_greet("world"), "helloworld") - - def test_string2(self): cl_stringmaker = make_cl_func(t.nested_whiles) self.assertEquals(cl_stringmaker(111, 114), "...!...!...!...!...!") Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Mon Oct 27 12:40:15 2003 @@ -1,7 +1,5 @@ import autopath -import sys -from cStringIO import StringIO from pypy.objspace.flow import FlowObjSpace from pypy.translator.gencl import GenCL from vpath.adapter.process import exec_cmd From jum at codespeak.net Mon Oct 27 19:13:18 2003 From: jum at codespeak.net (jum at codespeak.net) Date: Mon, 27 Oct 2003 19:13:18 +0100 (MET) Subject: [pypy-svn] rev 2093 - pypy/trunk/doc/devel Message-ID: <20031027181318.D10DA5B22D@thoth.codespeak.net> Author: jum Date: Mon Oct 27 19:13:06 2003 New Revision: 2093 Modified: pypy/trunk/doc/devel/howtosvn.txt Log: Updated to the latest versions. Modified: pypy/trunk/doc/devel/howtosvn.txt ============================================================================== --- pypy/trunk/doc/devel/howtosvn.txt (original) +++ pypy/trunk/doc/devel/howtosvn.txt Mon Oct 27 19:13:06 2003 @@ -110,13 +110,13 @@ -------------------------------------------------------------------------------- -.. _commandline: http://codespeak.net/~jum/svn-0.30.0-setup.exe +.. _commandline: http://codespeak.net/~jum/svn-0.32.1-setup.exe .. _website: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B259403 -.. _GUI: http://codespeak.net/~jum/TortoiseSVN-0.19-UNICODE.msi +.. _GUI: http://codespeak.net/~jum/TortoiseSVN-0.21-UNICODE.msi .. _Win: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4B6140F9-2D36-4977-8FA1-6F8A0F5DCA8F -.. _MacOS: http://codespeak.net/~jum/svn-0.30.0-darwin-ppc.tar.gz +.. _MacOS: http://codespeak.net/~jum/svn-0.32.1-darwin-ppc.tar.gz .. _iconv: http://codespeak.net/~jum/iconv-darwin-ppc.tar.gz -.. _tarball: http://codespeak.net/~jum/subversion-0.30.0.tar.gz +.. _tarball: http://codespeak.net/~jum/subversion-0.32.1.tar.gz .. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 .. _archives: http://codespeak.net/pipermail/pypy-svn/ From jum at codespeak.net Mon Oct 27 19:45:27 2003 From: jum at codespeak.net (jum at codespeak.net) Date: Mon, 27 Oct 2003 19:45:27 +0100 (MET) Subject: [pypy-svn] rev 2097 - pypy/trunk/doc/devel Message-ID: <20031027184527.B0E975B22D@thoth.codespeak.net> Author: jum Date: Mon Oct 27 19:45:26 2003 New Revision: 2097 Modified: pypy/trunk/doc/devel/howtosvn.txt Log: For the svn binaries we do use unmodified simply point the URLs to the subversion.tigris.org servers. Modified: pypy/trunk/doc/devel/howtosvn.txt ============================================================================== --- pypy/trunk/doc/devel/howtosvn.txt (original) +++ pypy/trunk/doc/devel/howtosvn.txt Mon Oct 27 19:45:26 2003 @@ -110,13 +110,13 @@ -------------------------------------------------------------------------------- -.. _commandline: http://codespeak.net/~jum/svn-0.32.1-setup.exe +.. _commandline: http://subversion.tigris.org/files/documents/15/7442/svn-0.32.1-setup.exe .. _website: http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B259403 -.. _GUI: http://codespeak.net/~jum/TortoiseSVN-0.21-UNICODE.msi +.. _GUI: http://tortoisesvn.tigris.org/files/documents/406/7481/TortoiseSVN-0.21-UNICODE.msi .. _Win: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4B6140F9-2D36-4977-8FA1-6F8A0F5DCA8F .. _MacOS: http://codespeak.net/~jum/svn-0.32.1-darwin-ppc.tar.gz .. _iconv: http://codespeak.net/~jum/iconv-darwin-ppc.tar.gz -.. _tarball: http://codespeak.net/~jum/subversion-0.32.1.tar.gz +.. _tarball: http://svn.collab.net/tarballs/subversion-0.32.1.tar.gz .. _guide: http://svnbook.red-bean.com/book.html#svn-ch-1 .. _archives: http://codespeak.net/pipermail/pypy-svn/ From sanxiyn at codespeak.net Tue Oct 28 03:45:36 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 03:45:36 +0100 (MET) Subject: [pypy-svn] rev 2102 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031028024536.49DB45B22B@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 03:45:34 2003 New Revision: 2102 Added: pypy/trunk/src/pypy/translator/transform.py (contents, props changed) - copied, changed from rev 2092, pypy/trunk/src/pypy/translator/peepfgt.py Removed: pypy/trunk/src/pypy/translator/peepfgt.py Modified: pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: gencl: newlist/newtuple, iter/next_and_flag, builtin. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 03:45:34 2003 @@ -3,7 +3,8 @@ from pypy.translator.annotation import Annotator from pypy.translator.simplify import simplify_graph -from pypy.translator.peepfgt import register as fgt_register +from pypy.translator.transform import transform_graph + # XXX For 2.2 the emitted code isn't quite right, because we cannot tell # when we should write "0"/"1" or "nil"/"t". @@ -11,6 +12,7 @@ class bool(int): pass + class Op: def __init__(self, gen, op): self.gen = gen @@ -76,6 +78,18 @@ } self.gen.emit_typecase(table, arg1) print ")" + def op_newtuple(self): + s = self.str + print "(setq", s(self.result), "(list", + for arg in self.args: + print s(arg), + print "))" + def op_newlist(self): + s = self.str + print "(setq", s(self.result), "(vector", + for arg in self.args: + print s(arg), + print "))" def op_alloc_and_set(self): s = self.str result, (size, init) = self.result, self.args @@ -83,8 +97,35 @@ print "(fill", s(result), s(init), ")" def op_setitem(self): s = self.str - (array, index, element) = self.args - print "(setf (elt", s(array), s(index), ")", s(element), ")" + (seq, index, element) = self.args + print "(setf (elt", s(seq), s(index), ")", s(element), ")" + def op_iter(self): + s = self.str + result, (seq,) = self.result, self.args + print "(setq", s(result), "(make-iterator", s(seq), "))" + def op_next_and_flag(self): + s = self.str + result, (iterator,) = self.result, self.args + print "(setq", s(result), "(funcall", s(iterator), "))" + builtin_map = { + pow: "expt", + } + def op_simple_call(self): + func = self.args[0] + if not isinstance(func, Constant): + self.op_default() + return + func = func.value + if func not in self.builtin_map: + self.op_default() + return + s = self.str + args = self.args[1:] + print "(setq", s(self.result), "(", self.builtin_map[func], + for arg in args: + print s(arg), + print "))" + class GenCL: def __init__(self, fun): @@ -95,8 +136,7 @@ def annotate(self, input_arg_types): ann = Annotator(self.fun) ann.build_types(input_arg_types) - fgt_register(ann) - ann.simplify() + transform_graph(ann) self.ann = ann def str(self, obj): if isinstance(obj, Variable): @@ -131,8 +171,10 @@ sys.stdout = sys.__stdout__ return out.getvalue() def emit(self): + self.emit_prelude() self.emit_defun(self.fun) def emit_defun(self, fun): + print ";;;; Main" print "(defun", fun.name arglist = fun.getargs() print "(", @@ -225,3 +267,16 @@ print trans % argreprs, print ")" print ")" + def emit_prelude(self): + print ";;;; Prelude" + print prelude + + +prelude = """\ +(defun make-iterator (seq) + (let ((i 0)) + (lambda () + (if (< i (length seq)) + (let ((v (elt seq i))) (incf i) (list v t)) + (list nil nil))))) +""" Deleted: /pypy/trunk/src/pypy/translator/peepfgt.py ============================================================================== --- /pypy/trunk/src/pypy/translator/peepfgt.py Tue Oct 28 03:45:34 2003 +++ (empty file) @@ -1,28 +0,0 @@ -"""Peephole Flow Graph Transformation -""" - -import autopath -from pypy.objspace.flow.model import Variable, Constant, SpaceOperation -from pypy.translator.annotation import Annotator - -def transform_allocate(self): - for block, ann in self.annotated.iteritems(): - operations = block.operations - n_op = len(operations) - for i in range(0, n_op-1): - op1 = operations[i] - op2 = operations[i+1] - if (op1.opname == 'newlist' and - len(op1.args) == 1 and - op2.opname == 'mul' and - op1.result is op2.args[0] and - ann.get_type(op2.args[1]) is int): - new_op = SpaceOperation('alloc_and_set', - (op2.args[1], op1.args[0]), - op2.result) - block.operations = (operations[:i] + - (new_op,) + - operations[i+2:]) - -def register(ann): - ann.simplify_hooks.append(transform_allocate) Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Tue Oct 28 03:45:34 2003 @@ -158,5 +158,13 @@ return i def greet(target): + """String test""" hello = "hello" return hello + target + +def choose_last(): + """For loop test""" + set = ["foo", "bar", "spam", "egg", "python"] + for choice in set: + pass + return choice Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 28 03:45:34 2003 @@ -95,5 +95,13 @@ self.assertEquals(cl_stringmaker(111, 114), "...!...!...!...!...!") + def test_for(self): + cl_python = make_cl_func(t.choose_last) + self.assertEquals(cl_python(), "python") + + def test_builtin(self): + cl_builtinusage = make_cl_func(t.builtinusage) + self.assertEquals(cl_builtinusage(), 4) + if __name__ == '__main__': test.main() Copied: pypy/trunk/src/pypy/translator/transform.py (from rev 2092, pypy/trunk/src/pypy/translator/peepfgt.py) ============================================================================== --- pypy/trunk/src/pypy/translator/peepfgt.py (original) +++ pypy/trunk/src/pypy/translator/transform.py Tue Oct 28 03:45:34 2003 @@ -24,5 +24,6 @@ (new_op,) + operations[i+2:]) -def register(ann): +def transform_graph(ann): ann.simplify_hooks.append(transform_allocate) + ann.simplify() From sanxiyn at codespeak.net Tue Oct 28 06:44:13 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 06:44:13 +0100 (MET) Subject: [pypy-svn] rev 2103 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031028054413.1CDCC5B22B@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 06:44:12 2003 New Revision: 2103 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/transform.py Log: range and slice for gencl! gencl * typemap: list -> vector * op not/is_true: list -> (zerop (length... * prelude: python-slice, python-range * builtin_map: range -> python-range * op getslice: python-slice (with subseq) * for convinience: cur_annset test_cltrans * slice test "half_of_n" working! transform * transform_slice, as usual annotation * simplify_hooks is dead * if index is slice, arg and result is of same seq type XXX * GenCL.reflow is very probably wrong. * There seems to be no simple way to add annotation and propagate it once after annotation is built. If I'm wrong, please correct me. All those annotation stuffs make it possible to infer from x = range(n) y = x[1:] that y is a list. Check half_of_n.lisp in a session directory. Above code is followed by "if y:", and typecase is not emitted. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Tue Oct 28 06:44:12 2003 @@ -10,7 +10,6 @@ def __init__(self, flowgraph): self.flowgraph = flowgraph - self.simplify_hooks = [] def build_types(self, input_arg_types): input_ann = AnnotationSet() @@ -65,8 +64,6 @@ def simplify(self): self.simplify_calls() - for hook in self.simplify_hooks: - hook(self) #__________________________________________________ @@ -134,6 +131,18 @@ def consider_op_newslice(self,op,annotations): annotations.set_type(op.result, slice) + def consider_op_getitem(self, op, annotations): + arg1,arg2 = op.args + type1 = annotations.get_type(arg1) + type2 = annotations.get_type(arg2) + if type1 in (list, tuple) and type2 is slice: + annotations.set_type(op.result, type1) + + # XXX: this shouldn't be here... + def consider_op_getslice(self, op, annotations): + tp = annotations.get_type(op.args[0]) + annotations.set_type(op.result, tp) + def consider_const(self,to_var,const,annotations): if getattr(const, 'dummy', False): return # undefined local variables Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 06:44:12 2003 @@ -65,6 +65,7 @@ table = { (bool,): "(not %s)", (int,): "(zerop %s)", + (list,): "(zerop (length %s))", } self.gen.emit_typecase(table, arg1) print "))" @@ -75,6 +76,7 @@ table = { (bool,): "%s", (int,): "(not (zerop %s))", + (list,): "(not (zerop (length %s)))", } self.gen.emit_typecase(table, arg1) print ")" @@ -109,6 +111,7 @@ print "(setq", s(result), "(funcall", s(iterator), "))" builtin_map = { pow: "expt", + range: "python-range", } def op_simple_call(self): func = self.args[0] @@ -119,12 +122,21 @@ if func not in self.builtin_map: self.op_default() return + # XXX: generalize this later + if func is range: + annset = self.gen.cur_annset() + annset.set_type(self.result, list) + self.gen.reflow() s = self.str args = self.args[1:] print "(setq", s(self.result), "(", self.builtin_map[func], for arg in args: print s(arg), print "))" + def op_getslice(self): + s = self.str + result, (seq, start, end) = self.result, self.args + print "(setq", s(result), "(python-slice", s(seq), s(start), s(end), "))" class GenCL: @@ -136,8 +148,14 @@ def annotate(self, input_arg_types): ann = Annotator(self.fun) ann.build_types(input_arg_types) + ann.simplify() transform_graph(ann) self.ann = ann + def cur_annset(self): + return self.ann.annotated[self.cur_block] + def reflow(self): + # XXX: I know, I know. This is WRONG. -- sanxiyn + self.ann.build_annotations(self.cur_annset()) def str(self, obj): if isinstance(obj, Variable): return obj.name @@ -247,10 +265,11 @@ bool: "boolean", int: "fixnum", type(''): "string", # hack, 'str' is in the namespace! + list: "vector", } def emit_typecase(self, table, *args): argreprs = tuple(map(self.str, args)) - annset = self.ann.annotated[self.cur_block] + annset = self.cur_annset() argtypes = tuple(map(annset.get_type, args)) if argtypes in table: trans = table[argtypes] @@ -279,4 +298,17 @@ (if (< i (length seq)) (let ((v (elt seq i))) (incf i) (list v t)) (list nil nil))))) +(defun python-slice (seq start end) + (let ((l (length seq))) + (if (not start) (setf start 0)) + (if (not end) (setf end l)) + (if (minusp start) (incf start l)) + (if (minusp end) (incf end l)) + (subseq seq start end))) +; temporary +(defun python-range (end) + (let ((a (make-array end))) + (loop for i below end + do (setf (elt a i) i)) + a)) """ Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 28 06:44:12 2003 @@ -103,5 +103,9 @@ cl_builtinusage = make_cl_func(t.builtinusage) self.assertEquals(cl_builtinusage(), 4) + def test_slice(self): + cl_half = make_cl_func(t.half_of_n) + self.assertEquals(cl_half(10), 5) + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/transform.py ============================================================================== --- pypy/trunk/src/pypy/translator/transform.py (original) +++ pypy/trunk/src/pypy/translator/transform.py Tue Oct 28 06:44:12 2003 @@ -24,6 +24,24 @@ (new_op,) + operations[i+2:]) +def transform_slice(self): + for block, ann in self.annotated.iteritems(): + operations = block.operations + n_op = len(operations) + for i in range(0, n_op-1): + op1 = operations[i] + op2 = operations[i+1] + if (op1.opname == 'newslice' and + ann.get_type(op1.args[2]) is type(None) and + op2.opname == 'getitem' and + op1.result is op2.args[1]): + new_op = SpaceOperation('getslice', + (op2.args[0], op1.args[0], op1.args[1]), + op2.result) + block.operations = (operations[:i] + + (new_op,) + + operations[i+2:]) + def transform_graph(ann): - ann.simplify_hooks.append(transform_allocate) - ann.simplify() + transform_allocate(ann) + transform_slice(ann) From sanxiyn at codespeak.net Tue Oct 28 07:50:16 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 07:50:16 +0100 (MET) Subject: [pypy-svn] rev 2104 - pypy/trunk/src/pypy/translator/tool Message-ID: <20031028065016.E19E65B22B@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 07:50:16 2003 New Revision: 2104 Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py Log: The truth, the universe, and 42, none of them are an eternal emperor. Sorry. writelisp enhancements. Note: 95 does not stand for Windows 95. "jiu wu" means an emperor in classic Chinese. Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Tue Oct 28 07:50:16 2003 @@ -16,6 +16,22 @@ else: return int(s) +def writelisp(gen, obj): + if isinstance(obj, (bool, int, type(None), str)): + return gen.conv(obj) + if isinstance(obj, (tuple, list)): + content = ' '.join([writelisp(gen, elt) for elt in obj]) + content = '(' + content + ')' + if isinstance(obj, list): + content = '#' + content + return content + +# for test +# ultimately, GenCL's str and conv will move to here +def f(): pass +fun = FlowObjSpace().build_flow(f) +gen = GenCL(fun) + def _make_cl_func(func, cl, path, argtypes=[]): fun = FlowObjSpace().build_flow(func) gen = GenCL(fun) @@ -28,9 +44,16 @@ fp = file(str(fpath), "a") print >>fp, "(write (", fun.name, for arg in args: - print >>fp, gen.conv(arg), + print >>fp, writelisp(gen, arg), print >>fp, "))" fp.close() output = exec_cmd("%s %s" % (cl, str(fpath))) return readlisp(output) return _ + +if __name__ == '__main__': + what = [True, "universe", 42, None, ("of", "them", ["eternal", 95])] + it = writelisp(gen, what) + print what + print it + assert it == '#(t "universe" 42 nil ("of" "them" #("eternal" 95)))' From sanxiyn at codespeak.net Tue Oct 28 11:14:50 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 11:14:50 +0100 (MET) Subject: [pypy-svn] rev 2105 - in pypy/trunk/src/pypy/translator: . test tool Message-ID: <20031028101450.E20A35B270@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 11:14:50 2003 New Revision: 2105 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: * reflow is gone. XXX all gone. please forget about it * gencl: lshift, list+list, long conv, optional input_arg_types * annotation: list+list, newlist, builtin call return type * buildcl: until readlisp is fixed, use Literal :) * snippet: powerset * test_cltrans: powerset working! Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Tue Oct 28 11:14:50 2003 @@ -101,10 +101,18 @@ annotations.set_type(op.result,int) if type1 is str and type2 is str: annotations.set_type(op.result, str) + if type1 is list and type2 is list: + annotations.set_type(op.result, list) - consider_op_sub = consider_op_add - consider_op_and_ = consider_op_add # don't forget the trailing '_' - # XXX add more + def consider_op_sub(self, op, annotations): + arg1, arg2 = op.args + type1 = annotations.get_type(arg1) + type2 = annotations.get_type(arg2) + if type1 is int and type2 is int: + annotations.set_type(op.result, int) + + consider_op_and_ = consider_op_sub # trailing underline + consider_op_inplace_lshift = consider_op_sub def consider_op_is_true(self, op, annotations): annotations.set_type(op.result, bool) @@ -128,6 +136,9 @@ ann = SpaceOperation("getitem",[op.result,Constant(i)],op.args[i]) annotations.add(ann) + def consider_op_newlist(self, op, annotations): + annotations.set_type(op.result, list) + def consider_op_newslice(self,op,annotations): annotations.set_type(op.result, slice) @@ -138,10 +149,30 @@ if type1 in (list, tuple) and type2 is slice: annotations.set_type(op.result, type1) - # XXX: this shouldn't be here... - def consider_op_getslice(self, op, annotations): - tp = annotations.get_type(op.args[0]) - annotations.set_type(op.result, tp) + def consider_op_call(self, op, annotations): + func = op.args[0] + if not isinstance(func, Constant): + return + func = func.value + # XXX: generalize this later + if func is range: + annotations.set_type(op.result, list) + if func is pow: + varargs = op.args[1] + def getitem(var, i): + class NoMatch(Exception): pass + c = Cell() + match = annotations.match( + SpaceOperation('getitem', (var, Constant(i)), c)) + if match: return deref(c) + else: raise NoMatch + try: + tp1 = annotations.get_type(getitem(varargs, 0)) + tp2 = annotations.get_type(getitem(varargs, 1)) + if tp1 is int and tp2 is int: + annotations.set_type(op.result, int) + except NoMatch: + pass def consider_const(self,to_var,const,annotations): if getattr(const, 'dummy', False): Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 11:14:50 2003 @@ -35,6 +35,7 @@ #"add": "+", "sub": "-", "inplace_add": "+", # weird, but it works + "inplace_lshift": "ash", "mod": "mod", "lt": "<", "le": "<=", @@ -55,6 +56,7 @@ table = { (int, int): "(+ %s %s)", (str, str): "(concatenate 'string %s %s)", + (list, list): "(concatenate 'vector %s %s)", } self.gen.emit_typecase(table, arg1, arg2) print ")" @@ -122,11 +124,6 @@ if func not in self.builtin_map: self.op_default() return - # XXX: generalize this later - if func is range: - annset = self.gen.cur_annset() - annset.set_type(self.result, list) - self.gen.reflow() s = self.str args = self.args[1:] print "(setq", s(self.result), "(", self.builtin_map[func], @@ -140,22 +137,19 @@ class GenCL: - def __init__(self, fun): + def __init__(self, fun, input_arg_types=[]): simplify_graph(fun) self.fun = fun self.blockref = {} - self.annotate([]) + self.annotate(input_arg_types) + transform_graph(self.ann) def annotate(self, input_arg_types): ann = Annotator(self.fun) ann.build_types(input_arg_types) ann.simplify() - transform_graph(ann) self.ann = ann def cur_annset(self): return self.ann.annotated[self.cur_block] - def reflow(self): - # XXX: I know, I know. This is WRONG. -- sanxiyn - self.ann.build_annotations(self.cur_annset()) def str(self, obj): if isinstance(obj, Variable): return obj.name @@ -169,7 +163,7 @@ return "t" else: return "nil" - elif isinstance(val, int): + elif isinstance(val, (int, long)): return str(val) elif val is None: return "nil" Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Tue Oct 28 11:14:50 2003 @@ -168,3 +168,33 @@ for choice in set: pass return choice + +def powerset(setsize): + """Powerset + + This one is from a Philippine Pythonista Hangout, an modified + version of Andy Sy's code. + + list.append is modified to list concatenation, and powerset + is pre-allocated and stored, instead of printed. + + URL is: http://lists.free.net.ph/pipermail/python/2002-November/ + """ + set = range(setsize) + maxcardinality = pow(2, setsize) + bitmask = 0L + powerset = [None] * maxcardinality + ptr = 0 + while bitmask < maxcardinality: + bitpos = 1L + index = 0 + subset = [] + while bitpos < maxcardinality: + if bitpos & bitmask: + subset = subset + [set[index]] + index += 1 + bitpos <<= 1 + powerset[ptr] = subset + ptr += 1 + bitmask += 1 + return powerset Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 28 11:14:50 2003 @@ -34,6 +34,7 @@ from pypy.translator.test import snippet as t +from pypy.translator.tool.buildcl import Literal class GenCLTestCase(test.IntTestCase): @@ -107,5 +108,12 @@ cl_half = make_cl_func(t.half_of_n) self.assertEquals(cl_half(10), 5) + def test_powerset(self): + cl_powerset = make_cl_func(t.powerset, [int]) + result = cl_powerset(3) + self.assertEquals(result.__class__, Literal) + self.assertEquals(result.val, + '#(#() #(0) #(1) #(0 1) #(2) #(0 2) #(1 2) #(0 1 2))') + if __name__ == '__main__': test.main() Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Tue Oct 28 11:14:50 2003 @@ -4,8 +4,13 @@ from pypy.translator.gencl import GenCL from vpath.adapter.process import exec_cmd +class Literal: + def __init__(self, val): + self.val = val + def readlisp(s): - # Return bool/int/str + # Return bool/int/str or give up + import string s = s.strip() if s == "T": return True @@ -13,8 +18,10 @@ return False elif s[0] == '"': return s[1:-1] - else: + elif s.strip(string.digits) == '': return int(s) + else: + return Literal(s) def writelisp(gen, obj): if isinstance(obj, (bool, int, type(None), str)): @@ -34,8 +41,7 @@ def _make_cl_func(func, cl, path, argtypes=[]): fun = FlowObjSpace().build_flow(func) - gen = GenCL(fun) - gen.annotate(argtypes) + gen = GenCL(fun, argtypes) out = gen.emitcode() i = 1 fpath = path.join("%s.lisp" % fun.name) From sanxiyn at codespeak.net Tue Oct 28 11:36:50 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 11:36:50 +0100 (MET) Subject: [pypy-svn] rev 2106 - pypy/trunk/src/pypy/translator Message-ID: <20031028103650.0E7475B274@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 11:36:49 2003 New Revision: 2106 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: gencl: for debug, shows result of type inference as comments Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 11:36:49 2003 @@ -199,20 +199,25 @@ if isinstance(node, Block): blocklist.append(node) traverse(collect_block, fun) - varlist = {} + vardict = {} for block in blocklist: tag = len(self.blockref) self.blockref[block] = tag + annset = self.ann.annotated[block] for var in block.getvariables(): - varlist[var] = None - varlist = varlist.keys() + vardict[var] = annset.get_type(var) print "(", - for var in varlist: + for var in vardict: if var in arglist: print "(", self.str(var), self.str(var), ")", else: print self.str(var), print ")" + print "; DEBUG: type inference" + for var in vardict: + tp = vardict[var] + if tp: + print ";", self.str(var), "is", tp.__name__ for block in blocklist: self.emit_block(block) print ")" From mwh at codespeak.net Tue Oct 28 12:16:46 2003 From: mwh at codespeak.net (mwh at codespeak.net) Date: Tue, 28 Oct 2003 12:16:46 +0100 (MET) Subject: [pypy-svn] rev 2107 - pypy/trunk/src/pypy/translator/test Message-ID: <20031028111646.737085B276@thoth.codespeak.net> Author: mwh Date: Tue Oct 28 12:16:45 2003 New Revision: 2107 Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: fix bug: if lisp was on $PATH but cmuclinvoke.sh not, we didn't then look for sbcl. Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 28 12:16:45 2003 @@ -15,10 +15,10 @@ def cl_detect(): if is_on_path("clisp"): return "clisp" - elif is_on_path("lisp"): + if is_on_path("lisp"): if is_on_path("cmuclinvoke.sh"): return "cmuclinvoke.sh" - elif is_on_path("sbcl"): + if is_on_path("sbcl"): if is_on_path("sbclinvoke.sh"): return "sbclinvoke.sh" return None From sanxiyn at codespeak.net Tue Oct 28 13:48:22 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 13:48:22 +0100 (MET) Subject: [pypy-svn] rev 2108 - pypy/trunk/src/pypy/translator Message-ID: <20031028124822.158B05B277@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 13:48:21 2003 New Revision: 2108 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: gencl: With DEBUG being True GenCL does operations by comments. Semicolon style. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 13:48:21 2003 @@ -6,6 +6,9 @@ from pypy.translator.transform import transform_graph +DEBUG = False + + # XXX For 2.2 the emitted code isn't quite right, because we cannot tell # when we should write "0"/"1" or "nil"/"t". if not isinstance(bool, type): @@ -22,6 +25,9 @@ self.args = op.args self.result = op.result def __call__(self): + if DEBUG: + self.op_default() + return if self.opname in self.binary_ops: self.op_binary(self.opname) else: @@ -29,8 +35,8 @@ meth = getattr(self, "op_" + self.opname, default) meth() def op_default(self): - print ";", self.op - print "; Op", self.opname, "is missing" + print ";;", self.op + print ";; Op", self.opname, "is missing" binary_ops = { #"add": "+", "sub": "-", @@ -213,11 +219,11 @@ else: print self.str(var), print ")" - print "; DEBUG: type inference" + print ";; DEBUG: type inference" for var in vardict: tp = vardict[var] if tp: - print ";", self.str(var), "is", tp.__name__ + print ";;", self.str(var), "is", tp.__name__ for block in blocklist: self.emit_block(block) print ")" @@ -304,10 +310,10 @@ (if (minusp start) (incf start l)) (if (minusp end) (incf end l)) (subseq seq start end))) -; temporary +;; temporary (defun python-range (end) (let ((a (make-array end))) (loop for i below end - do (setf (elt a i) i)) - a)) + do (setf (elt a i) i) + finally (return a)))) """ From sanxiyn at codespeak.net Tue Oct 28 14:26:08 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 14:26:08 +0100 (MET) Subject: [pypy-svn] rev 2109 - in pypy/trunk/src/pypy/translator: . test Message-ID: <20031028132608.12C1B5B277@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 14:26:07 2003 New Revision: 2109 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/gencl.py pypy/trunk/src/pypy/translator/test/test_cltrans.py Log: gencl, annotation: int/long test_cltrans: give types of arguments where appropriate Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Tue Oct 28 14:26:07 2003 @@ -98,18 +98,24 @@ type1 = annotations.get_type(arg1) type2 = annotations.get_type(arg2) if type1 is int and type2 is int: - annotations.set_type(op.result,int) + annotations.set_type(op.result, int) + elif type1 in (int, long) and type2 in (int, long): + annotations.set_type(op.result, long) if type1 is str and type2 is str: annotations.set_type(op.result, str) if type1 is list and type2 is list: annotations.set_type(op.result, list) + consider_op_inplace_add = consider_op_add + def consider_op_sub(self, op, annotations): arg1, arg2 = op.args type1 = annotations.get_type(arg1) type2 = annotations.get_type(arg2) if type1 is int and type2 is int: annotations.set_type(op.result, int) + elif type1 in (int, long) and type2 in (int, long): + annotations.set_type(op.result, long) consider_op_and_ = consider_op_sub # trailing underline consider_op_inplace_lshift = consider_op_sub Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 14:26:07 2003 @@ -61,6 +61,9 @@ print "(setq", s(result) table = { (int, int): "(+ %s %s)", + (int, long): "(+ %s %s)", + (long, int): "(+ %s %s)", + (long, long): "(+ %s %s)", (str, str): "(concatenate 'string %s %s)", (list, list): "(concatenate 'vector %s %s)", } @@ -73,6 +76,7 @@ table = { (bool,): "(not %s)", (int,): "(zerop %s)", + (long,): "(zerop %s)", (list,): "(zerop (length %s))", } self.gen.emit_typecase(table, arg1) @@ -84,6 +88,7 @@ table = { (bool,): "%s", (int,): "(not (zerop %s))", + (long,): "(not (zerop %s))", (list,): "(not (zerop (length %s)))", } self.gen.emit_typecase(table, arg1) @@ -269,6 +274,7 @@ typemap = { bool: "boolean", int: "fixnum", + long: "bignum", type(''): "string", # hack, 'str' is in the namespace! list: "vector", } Modified: pypy/trunk/src/pypy/translator/test/test_cltrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_cltrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_cltrans.py Tue Oct 28 14:26:07 2003 @@ -51,11 +51,11 @@ self.assertEquals(cl_if(1, 50, 100), 50) def test_gcd(self): - cl_gcd = make_cl_func(t.my_gcd) + cl_gcd = make_cl_func(t.my_gcd, [int, int]) self.assertEquals(cl_gcd(96, 64), 32) def test_is_perfect(self): # pun intended - cl_perfect = make_cl_func(t.is_perfect_number) + cl_perfect = make_cl_func(t.is_perfect_number, [int]) self.assertEquals(cl_perfect(24), False) self.assertEquals(cl_perfect(28), True) @@ -75,24 +75,24 @@ def test_easy(self): # These are the Pyrex tests which were easy to adopt. - f1 = make_cl_func(t.simple_func) + f1 = make_cl_func(t.simple_func, [int]) self.assertEquals(f1(1), 2) - f2 = make_cl_func(t.while_func) + f2 = make_cl_func(t.while_func, [int]) self.assertEquals(f2(10), 55) f3 = make_cl_func(t.simple_id) self.assertEquals(f3(9), 9) f4 = make_cl_func(t.branch_id) self.assertEquals(f4(1, 2, 3), 2) self.assertEquals(f4(0, 2, 3), 3) - f5 = make_cl_func(t.int_id) + f5 = make_cl_func(t.int_id, [int]) self.assertEquals(f5(3), 3) - f6 = make_cl_func(t.time_waster) + f6 = make_cl_func(t.time_waster, [int]) self.assertEquals(f6(30), 3657) def test_string(self): cl_greet = make_cl_func(t.greet, [str]) self.assertEquals(cl_greet("world"), "helloworld") - cl_stringmaker = make_cl_func(t.nested_whiles) + cl_stringmaker = make_cl_func(t.nested_whiles, [int, int]) self.assertEquals(cl_stringmaker(111, 114), "...!...!...!...!...!") @@ -105,7 +105,7 @@ self.assertEquals(cl_builtinusage(), 4) def test_slice(self): - cl_half = make_cl_func(t.half_of_n) + cl_half = make_cl_func(t.half_of_n, [int]) self.assertEquals(cl_half(10), 5) def test_powerset(self): From sanxiyn at codespeak.net Tue Oct 28 16:09:23 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 16:09:23 +0100 (MET) Subject: [pypy-svn] rev 2110 - pypy/trunk/src/pypy/translator Message-ID: <20031028150923.CC5065B285@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 16:09:23 2003 New Revision: 2110 Modified: pypy/trunk/src/pypy/translator/gencl.py Log: Fixed stdout capturing in GenCL. It had broken IDLE. Modified: pypy/trunk/src/pypy/translator/gencl.py ============================================================================== --- pypy/trunk/src/pypy/translator/gencl.py (original) +++ pypy/trunk/src/pypy/translator/gencl.py Tue Oct 28 16:09:23 2003 @@ -189,9 +189,10 @@ import sys from cStringIO import StringIO out = StringIO() + oldstdout = sys.stdout sys.stdout = out self.emit() - sys.stdout = sys.__stdout__ + sys.stdout = oldstdout return out.getvalue() def emit(self): self.emit_prelude() From arigo at codespeak.net Tue Oct 28 18:04:21 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 28 Oct 2003 18:04:21 +0100 (MET) Subject: [pypy-svn] rev 2111 - pypy/trunk/doc/translation Message-ID: <20031028170421.B0F485B265@thoth.codespeak.net> Author: arigo Date: Tue Oct 28 18:04:20 2003 New Revision: 2111 Added: pypy/trunk/doc/translation/annotations.txt Log: Added minimally-edited IRC log about annotations. Added: pypy/trunk/doc/translation/annotations.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/translation/annotations.txt Tue Oct 28 18:04:20 2003 @@ -0,0 +1,169 @@ +About annotations +================= + +Irc log from October, the 28th:: + + sanxiyn: ok for a few words about annotations? + yep! + (sorry for being out; I forgot it...) + np + mutable structures pose some problems + e.g. + because you cannot say "len(x) = 5" if 'x' is a list, of course + because the length of x could change + so just propagating the annotation is wrong + ah. + it's more annoying to say e.g. that x is a list of integers + Is it annoying? + getitem(x, anything) = y & type(y) = int + yep. + but what if you call f(x) + and f adds strings to the list x ? + I think RPython list shall be homogenous. + yes, but: + x = [] + f(x) + then f is allowed to put strings in x + ah, empty list thing... + yes but also: + x = ['hello'] + f(x) + ML languages have precisely the same problem, aren't they? + yes but i think we can solve it here + but we need to be careful + special casing empty list should work. (IIRC that's how it's done in ML, basically) + yes but i think we can solve it here (didn't i say that already :-) + agreed. so let's solve it; + :) + won't help verbosity, but let's think bout that later. + List length seems to be impossible to guarantee. + + we can say: + deref(x) = z ; getitem(z, anything) = y ; type(y) = int + here x is our variable, but z is a Cell() + so the list has a life of its own, independently from the variable it is in + * sanxiyn reads it carefully. + what i'm thinking about is this: + we would have (conceptually) a single big pool of annotation + not one AnnotationSet per basic block + only one, for the whole program + Yes. I found annset per block annoying, and felt that it's that way for no real reason. + we would map variables to this big annotation set + this must probably still be done for each block independently + each block would have a map {variable: cell-in-the-big-annset} + or maybe not + hm + because variables are supposed to be unique anyway + still, i think the big annset should not use variables at all, just cells and constants. + comments in get_variables_ann say otherwise, but I suspect it's outdated. + "supposed" to be unique... no, they still aren't really + eh, confused. + the comment is not outdated + what does it mean, then? + the same Variable() is still used in several blocks + that should be fixed + indeed. + I commented out XXX: variables must not be shared, and ran test_pyrextrans, and got 6 failures. + yes + all EggBlocks are wrong, currently + I don't know what Spam/Egg Blocks are. + :-) + Don't know at all. + it's funny names describing how the block was built + they are all Blocks + an EggBlock is used after a fork + fork? + a split, after a block with two exits + but that's not relevant to the other transformations + which can simplify the graph after it is built + + we could have a single big annset + it represents "the heap" of an abstract CPython process + hm. + i.e. objects in the heap + like lists, integers, all of them + using Cell() to represent abstract objects, and Constant() for concrete ones + then a variable is only something which appears in the basic block's SpaceOperations + * arigo is confused + So Variable() points to Cell(). + yes... + currently we cannot handle mutable lists because: + getitem(x, *) = z + is an annotation talking about the variable x + so we cannot propagate the annotation forth and back to called sub-functions + instead, getitem should talk about an object, not the variable that points to it + exactly! + That's Python-think. :) + http://starship.python.net/crew/mwh/hacks/objectthink.html + Is mwh's wonderful piece "How to think like a Pythonista" relevant here? + * arigo tries to do 4 things at the same times and fails to + So variables are names. + It binds. + yes + mwh wrote: "I find the world variable to be particularly unhelpful in a Python context..." + with wonderful diagrams :) + yah, introducing namespaces into abstract-interpretation world! :-) + namespace? eh, not exactly, I think... + hpk: yes, each block is its own namespace here :-) + and obviously we need "heap objects" that these names can refer to + (namespaces in the meaning of "living" bindings between names and objects) + So "objects" are actually cells unless constant-propagated... + yes... + i think we could even go for a full-Prolog representation: + the "big heap" contains cells and constants. cells can become constants when we know more about them. + * sanxiyn should read Borges and Calvino as Martellibot suggested. :) + seems cleaner than the current cell-variable-constant mix. + in other words, a SpaceOperation uses variables only, + and the variable can refer to a cell or a constant from the heap... + the point is that the objects in the heap can be manipulated + say a variable v1 points to a cell c + with type(c) = list and len(c) = 3 + v2 = v1 and v1 points to the same cell c. + you modify v2 and v1 is modified, too, etc. + yes exactly + if you append an item to the list then the annotation len(c) = 3 is deleted + Is "prolog" a pronoun for "non-determinism"? + Logic Programming i think + + arigo: I think that solves "reflow". + sanxiyn: yes, possibly + you can add annotations freely, at least + that's fine + we'll just need a trick to delete ("retract") annotations + because other annotations may depend on this one + like type(c3)=int is only valid if type(c1)=int and type(c2)=int because we used an 'add' operation + Currently flowin does similar thing. + It recomputes all annotations if len(annset) is decreased. + sanxiyn: yes, but it should work without the need to re-flowin + eh? + without re-flowin? + if you delete an annotation, then you must recompute annotations recursively on the rest of the graph + yes, how to avoid that? + we can record dependencies + each annotation "knows" that it depends on some other ones + question is if there are different ways of "depending" or just one way + hpk: right + in a way a space operation modifying the assertions denotes 'edges' in this dependency graph? + yes + I think annotation should know about *others* which depend on itself, not which itself depends on. + yes + when you kill an annotation, just follow the forward dependencies to kill the ones it depends on + So not dependency... reverse dependency? :) + forward dependency... ? + Should be easy to add. + "reasons"? + origin? + hpk: no, consequences. + hpk: neither reason nor origin. + "dependents" ? + As in SF novel "time patrol", if you change the past, the future is all changed. + how about consequences? I'm not good at naming... + too long :-) + implication + too long ; + consequences is fine if you don't have to type it too often :-) + hmmm. + i guess we need an Annotation class whose constructor takes a list of dependencies, and records 'self' in these dependencies' "consequences" or whatever + I think only deletion routine need to refer it. + +...cut. So if you have a good name for that attributes, speak up :-) From arigo at codespeak.net Tue Oct 28 18:21:29 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Tue, 28 Oct 2003 18:21:29 +0100 (MET) Subject: [pypy-svn] rev 2112 - in pypy/trunk/doc: irclog translation Message-ID: <20031028172129.92FF95B285@thoth.codespeak.net> Author: arigo Date: Tue Oct 28 18:21:28 2003 New Revision: 2112 Added: pypy/trunk/doc/irclog/ pypy/trunk/doc/irclog/annotations.txt - copied, changed from rev 2111, pypy/trunk/doc/translation/annotations.txt pypy/trunk/doc/irclog/llvm.txt Removed: pypy/trunk/doc/translation/annotations.txt Log: Added another irc log. Moved the previous one in a new directory 'doc/irclog'. Added very short abstracts. Copied: pypy/trunk/doc/irclog/annotations.txt (from rev 2111, pypy/trunk/doc/translation/annotations.txt) ============================================================================== --- pypy/trunk/doc/translation/annotations.txt (original) +++ pypy/trunk/doc/irclog/annotations.txt Tue Oct 28 18:21:28 2003 @@ -1,6 +1,11 @@ About annotations ================= +We are running into limitations of the annotation system used for type inference. +This document describes these limitations and how to slightly move the concepts +around to fix them, and probably also how the whole issues occurred from having +mixed concepts in wrong ways in the first place. + Irc log from October, the 28th:: sanxiyn: ok for a few words about annotations? Added: pypy/trunk/doc/irclog/llvm.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/irclog/llvm.txt Tue Oct 28 18:21:28 2003 @@ -0,0 +1,167 @@ +LLVM +==== + +First discussion about using LLVM as a target language. +LLVM (Low Level Virtual Machine) is a Compiler Infrastructure; +see http://llvm.cs.uiuc.edu/. + +Irc log from October, the 28th:: + + So I smell something growing here... + arigo: thanks. I lost some of up-logs... so I asked. + stackless: nice + on that assembly target: How is their source code? Had no time to look. I hope + they don't use huge ugly other languages like ML? + stackless: good for you! I thank Richard Emslie, I thank Richard Emslie (he repeats) + arigo: uh, bob ippolito just wrote that LLVM is all C++ + stackless: i doubt it + Yep. LLVM is in C++. + arigo: so logging & summary is for you (evil grin) + sanxiyn: yes + stackless: i think they are using fast custom back-ends for runtime code generation + arigo: that sounds like what I like. + stackless: they also mentioned grabbing parts of GCC + who bothers - we have to have some binding with C++ then :-) + stackless: or ideas and AST structures at least + but they seemed to like to move away from it (because of licensing issues) + well, they might like PyPy and decide to become part of the project, supporting us. + * sanxiyn baffles, "ML is neither huge nor ugly!" + stackless: yes ! + in all cases i think that a genllvm.py should be easy to write + right + and if their compilers are good it could be faster than C + * stackless apologises, didn't mean ML, probably. But last time he looked into C--, he was unhappy to pull so much tings in... + because it has a lot of meta-information + not only types, but single-step-assignment guarantees no aliasing, whereas GCC tries hard to find out what could alias what + single-step-assignment is one thing I remember from C-- + yes + it's a good idea + really good. They never have expressions in function calls. + and it's natural for intermediate languages like our flow graphs + Instead, order of evaluation is crystal clear. + I think FlowModel has that property too... + yes + since it's derived from Python bytecode... etc. + interesting stuff from the e-mail at http://mail.cs.uiuc.edu/pipermail/llvmdev/2003-October/000501.html + "programs which have high-degree basic blocks" + high-degree mean (unless i'm mistaken) a lot of inputargs + we have a lot of them indeed + yes! + that's what' + that's a problem when using languages like ML as intermediate languages + you can write functions with 23 arguments + but the compiler isn't optimized for that + i tried, it produces bad code :-) + Ah, I heard it from Lisp gotchas, i.e. it's easier to write slow code in Lisp. + (it specifically mentioned problem with multiple value return optimization. sounds similar.) + btw, what is SSA... + single-step assignment (never write to a variable more than once) + I'm not sure how does it help, but I don't know much about this area. + i a m just skimming the source code + looks nice and readable + and good inline documentation it seems + it is c++ though :-) + arigo: Was thinking more about SpaceOp/Annset. It's a constraint-based programming. + yes, constrain propagation... + That's what Screamer (sorry, don't know about others. this one is Lisp) do very well... + Integer range analysis and all goodies. + * hpk has not often seen such nice c++ code ... + So it's not really a new idea. But that means we have lots of expereince to learn from. + sanxiyn: yes + * sanxiyn loads screamer intro he downloaded but have never read. + hmmm, it's really a high level c++ code, probably pretty easy to convert to python (the parts i have seen) + How much code is LLVM? + i have no idea + i just read the commit mails + ls + PyPy is currently 39844 lines of code. + (22000 of them is PyPy, 16000 Pyrex.) + what? + 16000 pyrex? what do you mean? + Plex + Pyrex is 16000 lines. + + Oct 28 16:10:18 --> pedronis (~sp at 91.51.202.62.dial.bluewin.ch) has joined #pypy + Hello. + hi + pedronis: hi samuele + hi samuele + * sanxiyn downloads LLVM 1.0 + hpk: what do you think about line count? :) + * arigo downloads LLVM 1.0 too + why do we need to be so fast with LLVM, is why they want to setup a public repo and we want to offer hosting it? + we don't need to be hasty, right. + hpk: eh. should I register to download? + i just did :-) + so did i :-) + with real name and all :-) + me too. + pedronis: it cant hurt to contact them informally and see/talk about ideas i think + well. it's *huge*; + pedronis: if we find out that we were over-enthusiatic we have not lost much, i think + pedronis: i think their project is interesting, for PyPy or not, and holger talked about offering hosting + pedronis: but mostly i'm sure if llvm is well written it is excellent for PyPy + pedronis: this needs to be checked and discussed of course + arigo: what I'm not sure, and we should ask is how much they are interested in optimization for VHLL + as opposed to C-like languages ? + arigo: yup, it seems that LLVM need to extended for thing like exact GC, or some possible lookup opts for VHLL + yes, i think the VHLL is supposed to do language-specific optimizations itself + * sanxiyn metions Parrot... not. + and only emit a low-level code that contains enough information for good low-level optimization + Parrot is the only explicitly VHLL VM I know of. + arigo: it seems they are interested in things like region-based memory allocation etc + yes, which is fine i think + arigo: which goes more in the device driver, OS kernel direction + quote: The Python test classes are more UNIX-centric than they should be, so porting to non-UNIX like platforms + we can have refcounted regions and garbage-collected ones + (i thought it's interesting that they are using python for something :-) + hpk: Many projects use Python for unittesting, but usually they have not much to do with Python. + For example, svn uses Python for unittesting. + sanxiyn: sure, but it's still significant information + pedronis: llvm is definitely a low-level tool + and BIND and whatnot + Yes. It tells us they know about Python. :) + arigo: yes, the point is whether they are happy extending it to support non-low-level stuff + pedronis: i'm thinking about it at least as a very good alternative to C for the translator + pedronis: but i think they would be happy to design some "hooks" needed for high-level languages + pedronis: they don't have Java yet for example but mention wanting to look in that direction + arigo: OK, so using the their static compiler? + pedronis: at least + pedronis: we should try to write "genllvm.py" + If RPython can be translated to C, it surely can be translated to LLVM. + And moreover, as Psyco do (perhaps I'm wrong here), some Applevel Python function may be able to be JITted by (LLVM or whatever). + pedronis: i think the experiment is worth being made + sanxiyn: yes, that's what is beyond my "at least" :-) + arigo: well the experiment is cheap + arigo: Will you post log and summary for binding concept and forward-dependency, constraint-based programming? + sanxiyn: yes + pedronis: yes + topic is moving farther and farther from that. + sanxiyn: i've saved the relevant parts, will edit them when i've a minute + ah, ok. + arigo: my issue is how much their JIT is usable and drivable at runtime, and intergation with things like GC etc + arigo: OTOH yes as target of the translator, that another situation + pedronis: yes for the JIT it needs more investigation + pedronis: for full Psyco i'd need compilation of basic-blocks-at-a-time (not whole functions at a time) + arigo: yes, I know that, is one of the thing I was wondering about + I remeber Psyco does very complex things to accomplish that. + pedronis: right now i'm pretty enthusiastic because the LLVM language is just the same as our flowgraphs, so we could probably at least have a JIT for RPython + + Oct 28 16:31:22 --> faassen (~faassen at a213-84-57-72.adsl.xs4all.nl) has joined #pypy + hi martijn + arigo: yes or just static compilation + arigo: it seems they are investigating trace-based techniques like Dynamo + pedronis: actually, i don't know many projects with a good runtime compiler that accepts an in-memory SSA representation of code + hey. + pedronis: this alone makes llvm interesting, for many projects that I can think about besides or on top of PyPy + So LLVM is already a rare case? + what really impresses me is how their website and the source code is done + faassen: hi martijn + hpk: hey! :) + pedronis: trace techniques are nice, Psyco's profiler is a bit primitive + website is impressive. I don't know C++ very well to judge the code. :( + sanxiyn: trust me it's better than average :-) + what website is that? :) + pedronis: at this point i think we should at least consider using llvm even if we have to change a bit the C++ code to add a couple of instructions. + http://llvm.cs.uiuc.edu/#subprojects + +... cut at Martijn's arrival :-) Deleted: /pypy/trunk/doc/translation/annotations.txt ============================================================================== --- /pypy/trunk/doc/translation/annotations.txt Tue Oct 28 18:21:28 2003 +++ (empty file) @@ -1,169 +0,0 @@ -About annotations -================= - -Irc log from October, the 28th:: - - sanxiyn: ok for a few words about annotations? - yep! - (sorry for being out; I forgot it...) - np - mutable structures pose some problems - e.g. - because you cannot say "len(x) = 5" if 'x' is a list, of course - because the length of x could change - so just propagating the annotation is wrong - ah. - it's more annoying to say e.g. that x is a list of integers - Is it annoying? - getitem(x, anything) = y & type(y) = int - yep. - but what if you call f(x) - and f adds strings to the list x ? - I think RPython list shall be homogenous. - yes, but: - x = [] - f(x) - then f is allowed to put strings in x - ah, empty list thing... - yes but also: - x = ['hello'] - f(x) - ML languages have precisely the same problem, aren't they? - yes but i think we can solve it here - but we need to be careful - special casing empty list should work. (IIRC that's how it's done in ML, basically) - yes but i think we can solve it here (didn't i say that already :-) - agreed. so let's solve it; - :) - won't help verbosity, but let's think bout that later. - List length seems to be impossible to guarantee. - - we can say: - deref(x) = z ; getitem(z, anything) = y ; type(y) = int - here x is our variable, but z is a Cell() - so the list has a life of its own, independently from the variable it is in - * sanxiyn reads it carefully. - what i'm thinking about is this: - we would have (conceptually) a single big pool of annotation - not one AnnotationSet per basic block - only one, for the whole program - Yes. I found annset per block annoying, and felt that it's that way for no real reason. - we would map variables to this big annotation set - this must probably still be done for each block independently - each block would have a map {variable: cell-in-the-big-annset} - or maybe not - hm - because variables are supposed to be unique anyway - still, i think the big annset should not use variables at all, just cells and constants. - comments in get_variables_ann say otherwise, but I suspect it's outdated. - "supposed" to be unique... no, they still aren't really - eh, confused. - the comment is not outdated - what does it mean, then? - the same Variable() is still used in several blocks - that should be fixed - indeed. - I commented out XXX: variables must not be shared, and ran test_pyrextrans, and got 6 failures. - yes - all EggBlocks are wrong, currently - I don't know what Spam/Egg Blocks are. - :-) - Don't know at all. - it's funny names describing how the block was built - they are all Blocks - an EggBlock is used after a fork - fork? - a split, after a block with two exits - but that's not relevant to the other transformations - which can simplify the graph after it is built - - we could have a single big annset - it represents "the heap" of an abstract CPython process - hm. - i.e. objects in the heap - like lists, integers, all of them - using Cell() to represent abstract objects, and Constant() for concrete ones - then a variable is only something which appears in the basic block's SpaceOperations - * arigo is confused - So Variable() points to Cell(). - yes... - currently we cannot handle mutable lists because: - getitem(x, *) = z - is an annotation talking about the variable x - so we cannot propagate the annotation forth and back to called sub-functions - instead, getitem should talk about an object, not the variable that points to it - exactly! - That's Python-think. :) - http://starship.python.net/crew/mwh/hacks/objectthink.html - Is mwh's wonderful piece "How to think like a Pythonista" relevant here? - * arigo tries to do 4 things at the same times and fails to - So variables are names. - It binds. - yes - mwh wrote: "I find the world variable to be particularly unhelpful in a Python context..." - with wonderful diagrams :) - yah, introducing namespaces into abstract-interpretation world! :-) - namespace? eh, not exactly, I think... - hpk: yes, each block is its own namespace here :-) - and obviously we need "heap objects" that these names can refer to - (namespaces in the meaning of "living" bindings between names and objects) - So "objects" are actually cells unless constant-propagated... - yes... - i think we could even go for a full-Prolog representation: - the "big heap" contains cells and constants. cells can become constants when we know more about them. - * sanxiyn should read Borges and Calvino as Martellibot suggested. :) - seems cleaner than the current cell-variable-constant mix. - in other words, a SpaceOperation uses variables only, - and the variable can refer to a cell or a constant from the heap... - the point is that the objects in the heap can be manipulated - say a variable v1 points to a cell c - with type(c) = list and len(c) = 3 - v2 = v1 and v1 points to the same cell c. - you modify v2 and v1 is modified, too, etc. - yes exactly - if you append an item to the list then the annotation len(c) = 3 is deleted - Is "prolog" a pronoun for "non-determinism"? - Logic Programming i think - - arigo: I think that solves "reflow". - sanxiyn: yes, possibly - you can add annotations freely, at least - that's fine - we'll just need a trick to delete ("retract") annotations - because other annotations may depend on this one - like type(c3)=int is only valid if type(c1)=int and type(c2)=int because we used an 'add' operation - Currently flowin does similar thing. - It recomputes all annotations if len(annset) is decreased. - sanxiyn: yes, but it should work without the need to re-flowin - eh? - without re-flowin? - if you delete an annotation, then you must recompute annotations recursively on the rest of the graph - yes, how to avoid that? - we can record dependencies - each annotation "knows" that it depends on some other ones - question is if there are different ways of "depending" or just one way - hpk: right - in a way a space operation modifying the assertions denotes 'edges' in this dependency graph? - yes - I think annotation should know about *others* which depend on itself, not which itself depends on. - yes - when you kill an annotation, just follow the forward dependencies to kill the ones it depends on - So not dependency... reverse dependency? :) - forward dependency... ? - Should be easy to add. - "reasons"? - origin? - hpk: no, consequences. - hpk: neither reason nor origin. - "dependents" ? - As in SF novel "time patrol", if you change the past, the future is all changed. - how about consequences? I'm not good at naming... - too long :-) - implication - too long ; - consequences is fine if you don't have to type it too often :-) - hmmm. - i guess we need an Annotation class whose constructor takes a list of dependencies, and records 'self' in these dependencies' "consequences" or whatever - I think only deletion routine need to refer it. - -...cut. So if you have a good name for that attributes, speak up :-) From sanxiyn at codespeak.net Tue Oct 28 19:04:03 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Tue, 28 Oct 2003 19:04:03 +0100 (MET) Subject: [pypy-svn] rev 2113 - pypy/trunk/doc/sprintinfo Message-ID: <20031028180403.BCFEC5B34B@thoth.codespeak.net> Author: sanxiyn Date: Tue Oct 28 19:04:02 2003 New Revision: 2113 Added: pypy/trunk/doc/sprintinfo/HildesheimReport.txt - copied unchanged from rev 2112, pypy/trunk/doc/sprintinfo/Hildesheim.txt pypy/trunk/doc/sprintinfo/LouvainLaNeuvePlan.txt - copied unchanged from rev 2112, pypy/trunk/doc/sprintinfo/sprint-planning.txt Removed: pypy/trunk/doc/sprintinfo/Hildesheim.txt pypy/trunk/doc/sprintinfo/sprint-planning.txt Log: sprintinfo renaming. Deleted: /pypy/trunk/doc/sprintinfo/Hildesheim.txt ============================================================================== --- /pypy/trunk/doc/sprintinfo/Hildesheim.txt Tue Oct 28 19:04:02 2003 +++ (empty file) @@ -1,113 +0,0 @@ -Hildesheim Sprint Report -======================== - -The Hildesheim Sprint provided a chance to meet and decide several crucial design considerations. -A #pypy irc channel provided communication among participants between sprints. The sourcecode -was loaded into subversion and participants given commit rights. - -At the Sprint: -Some folks did lots of handwaving and created really kewl concepts. Other pairs concentrated on coding, testing, builtin functions etc etc. We gathered for goalsetting meetings several times during the sprint, then split up to work on tasks. Half of the work was done by pair programming. Pairs were informal, developing and changing as tasks were discovered and completed. Sprints varied in amount of "discuss as a group" and "just do it" time. We spent lots of intense time together, not just coding but also social time, (meals, spending a day playing tourist, etc), which enhanced the building of relationships and understanding among sprinters. - -Some discoveries: Plan on the first morning for hardware setup and fixing system issues, (wireless is great!) Built-in private time is necessary for the sprint. Whiteboards and projectors are both necessary, as is coffee and tea. Bringing in/providing food is fine but getting people away for lunch is good to clear their minds. Leadership varied throughout the sprints and throughout the day. - - - -Brainstorming about what PyPy might be --------------------------------------- - -The following was written down at the first Sprint to understand -each other's motivations and ideas. It's not very sorted but -might still be interesting to skim. - -- Python interpreter written in python - - loads bytecode - - delegates/dispatches to ObjectSpaces to implement operations - on the objects - - there can be more than one ObjectSpace - - for example: BorrowingObjectSpace (from CPython) - - define/implement a class that emulates the Python - Execution Frame - -- use the main-loop of the interpreter to do a lot of - things (e.g. do type inference during running the bytecode - or not even run the bytecodes, but interpret various attributes of the code) - -- working together, producing something real - -- saving interpreter state to an image (following the smalltalk model) - process-migration / persistence - -- looking at the entire code base (living in an image), browsing - objects interactively - -- interactive environment, trying code snippets, introspection - -- deploying python made easy, integrate version control systems - -- integrate the various technologies on the web site, issue tracking, - Wiki... - -- seperate exception handling from the mainline code, avoid peppering - your code with try :-), put exception handling into objects. - -- import python code from the version control store directly, give - imported code also a time dimension - -- combining python interpreters from multiple machines (cluster) into a - virtual sandbox (agent space?) - -- get a smaller (maybe faster) python with very few C-code - -- (hoping for Psyc) to render fast code from Python code (instead of - hard-c) - -- go to a higher level python core (and write out/generate interpreters - in different languages), e.g. the former P-to-C resolved the evalframe-loop - but still called into the Python-C-library which is statically coded - -- very far fetched: PyPython becomes a/the reference implementation - -- have enough flexibility to make a separate stackless obsolete - -- have a language that is high-level/easy enough to program - but with the same performance as statically compiled languages - (e.g. C++) - - -what is the difference between a compiler and an interpreter ------------------------------------------------------------- - -f = bytecode interpreter -p = program -a = arguments - -c = compiler - -assert f(p, a) == c(p)(a) == r - - -- architecture overview - * byte code interp loop - plan how the interp loop should look like from a hi level - map that structure in descriptions that can be used to generate interpreters/compilers - define the frame structure - - * define a object/type model that maps into python data structures - wrap cpython objects into the new object model so we can continue - to use cpython modules - - * rewrite c python modules and the builtin object library in python - optimzation for a potential global python optimizer, until that - exists it will be slower than the corresponding cpython implementation - -- import the cpython distribution so we can use parts of it in our - repository, make it easy to follow the cpython development - -- finish the python to byte code compiler in python project (this is - already part of the cpython distribution, needs a python lexer) - -- doing other things than interpreting byte code from the python interp - loop, for example generate C code, implement other object spaces in our - terminlogy other far fetched things with execution - -- how to enter c ysystem calls into the python object space (ctypes) Deleted: /pypy/trunk/doc/sprintinfo/sprint-planning.txt ============================================================================== --- /pypy/trunk/doc/sprintinfo/sprint-planning.txt Tue Oct 28 19:04:02 2003 +++ (empty file) @@ -1,43 +0,0 @@ -Sprint Planning ---------------- - -Here is a list of things we might want to do at one of the next sprints. -Currently it's roughly what is left over from the last sprints. - -- do more tests (eternal goal) - -- Fix XXX-marked things (eternal goal) - -- enhance StdObjSpace, define goals and achieve them - http://codespeak.net/svn/pypy/trunk/src/goals/ - - - support the objects we see falling back to CPython. - - more builtins. - - more things from sys. - - dict object/type - - Hash table based implementation of dictionaries? - - list object/type - - write a small tool that checks a type's methods of - CPython against PyPy - (Jacob, Laura) done - -- go through the wiki and clean up "stale" or old pages - -- implement the beginnings of a C code generator. the basic idea - is "abstract interpretation".... - -- discuss funding and future organization issues - ---------------------------------------------------------------- - -.. _boolobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000381.html -.. _cpythonobj: http://codespeak.net/pipermail/pypy-svn/2003-June/000385.html -.. _instmethod: http://codespeak.net/pipermail/pypy-svn/2003-June/000389.html -.. _long: http://codespeak.net/pipermail/pypy-svn/2003-June/000410.html -.. _sliceobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000408.html -.. _userobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000449.html -.. _dictobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000515.html -.. _intobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000443.html -.. _instmethod: http://codespeak.net/pipermail/pypy-svn/2003-June/000389.html -.. _iterobject: http://codespeak.net/pipermail/pypy-svn/2003-June/000999.html - From sanxiyn at codespeak.net Wed Oct 29 14:12:51 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Wed, 29 Oct 2003 14:12:51 +0100 (MET) Subject: [pypy-svn] rev 2116 - in pypy/trunk/src/pypy/translator: test tool Message-ID: <20031029131251.1CF855B281@thoth.codespeak.net> Author: sanxiyn Date: Wed Oct 29 14:12:50 2003 New Revision: 2116 Modified: pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_cltrans.py pypy/trunk/src/pypy/translator/tool/buildcl.py Log: snippet: cosmetic cltrans: more tests: if_list, yast buildcl: quote Lisp list Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Wed Oct 29 14:12:50 2003 @@ -134,11 +134,11 @@ """Arbitrary test function""" i = 0 x = 1 - while i Author: sanxiyn Date: Thu Oct 30 17:34:39 2003 New Revision: 2124 Modified: pypy/trunk/src/pypy/translator/annotation.py pypy/trunk/src/pypy/translator/transform.py Log: block.operations was a tuple, to make sure FlowObjSpace doesn't try to add operations after it "closed" a block. (Armin) But after the latest flowmodel refactoring, this idea is dropped, so now they shall be just a list. Thus this fix. Modified: pypy/trunk/src/pypy/translator/annotation.py ============================================================================== --- pypy/trunk/src/pypy/translator/annotation.py (original) +++ pypy/trunk/src/pypy/translator/annotation.py Thu Oct 30 17:34:39 2003 @@ -60,7 +60,7 @@ op = SpaceOperation('simple_call', args_w, op.result) # XXX check that w_kwargs is empty newops.append(op) - block.operations = tuple(newops) + block.operations = newops def simplify(self): self.simplify_calls() Modified: pypy/trunk/src/pypy/translator/transform.py ============================================================================== --- pypy/trunk/src/pypy/translator/transform.py (original) +++ pypy/trunk/src/pypy/translator/transform.py Thu Oct 30 17:34:39 2003 @@ -7,7 +7,7 @@ def transform_allocate(self): for block, ann in self.annotated.iteritems(): - operations = block.operations + operations = block.operations[:] n_op = len(operations) for i in range(0, n_op-1): op1 = operations[i] @@ -20,13 +20,11 @@ new_op = SpaceOperation('alloc_and_set', (op2.args[1], op1.args[0]), op2.result) - block.operations = (operations[:i] + - (new_op,) + - operations[i+2:]) + block.operations[i:i+2] = [new_op] def transform_slice(self): for block, ann in self.annotated.iteritems(): - operations = block.operations + operations = block.operations[:] n_op = len(operations) for i in range(0, n_op-1): op1 = operations[i] @@ -38,9 +36,7 @@ new_op = SpaceOperation('getslice', (op2.args[0], op1.args[0], op1.args[1]), op2.result) - block.operations = (operations[:i] + - (new_op,) + - operations[i+2:]) + block.operations[i:i+2] = [new_op] def transform_graph(ann): transform_allocate(ann) From hpk at codespeak.net Thu Oct 30 18:43:16 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 30 Oct 2003 18:43:16 +0100 (MET) Subject: [pypy-svn] rev 2125 - pypy/trunk/doc/devel Message-ID: <20031030174316.B31FD5B5E4@thoth.codespeak.net> Author: hpk Date: Thu Oct 30 18:43:15 2003 New Revision: 2125 Modified: pypy/trunk/doc/devel/coding-style.txt Log: revised/cleaned up the coding style document. please scrutinize it. Modified: pypy/trunk/doc/devel/coding-style.txt ============================================================================== --- pypy/trunk/doc/devel/coding-style.txt (original) +++ pypy/trunk/doc/devel/coding-style.txt Thu Oct 30 18:43:15 2003 @@ -3,104 +3,61 @@ ===================================== -Directory Structure (example sketch) ------------------------------------- -Here is an example of the directory structure:: - - trunk/ - src/ - pypy/ - interpreter/ - pyframe.py - opcodes.py - opcodes_app.py - baseobjspace.py - - module/ # mixed interpreter/app-code - builtin.py - builtin_app.py - struct.py - struct_app.py - test/ - test_struct_app.py - test_struct.py - - objspace/ # all objectsspaces go here - std/ # __init__.py pulls in the ObjSpace class - floatobject.py - intobject.py - objspace.py - trivial.py - - appspace/ # pure app-python modules converted/modified from CPython - parser.py - compiler/ - - www/ - moincode/ -> site-packages/MoinMoin - moininstance/ -> wiki-instance - data/text/ - issue/ -> issue-tracker-instance # rename - htdocs-pypy/ -> www-root visible as /pypy/ - util/ -> used for internal deployment (not visible to outside) - doc/ # meta-documents about pypy (unordered) - -end of example. - Naming and environment ----------------------------- -- the PYTHONPATH should be set to the filesystem equivalent of - http://codespeak.net/svn/pypy/trunk/src - in fact the "autopath" module does this for you. +- directories/modules/namespaces are always **lowercase** -- ``__init__.py`` is always empty except for ``"pypy/objspace/*"`` +- classes are **CamelCase** -- directories/modules/namespaces are always lowercase +- never use plural names in directory and file names -- classes are CamelCase +- ``__init__.py`` is always empty except for ``"pypy/objspace/*"`` -- functions/methods are lowercase and ``'_'-separated`` (if +- functions/methods are lowercase and ``'_'-separated`` (if you need to separate at all) +- not more than 4 directory nesting levels + +Committing +---------- + +- it's nice to write good log messages because several people + are reading the diffs. + +- if you add (text/py) files to the repository then please run + pypy/tool/fixeol in that directory. This will make sure + that the property 'svn:eol-style' is set to native which + allows checkin/checkout in native line-ending format. + Object Spaces --------------- - objectspace classes are always spelled "ObjSpace" e.g. TrivialObjSpace StdObjSpace + FlowObjSpace - at interpreter level and in ObjSpace all boxed values have a leading ``w_`` to indicate "wrapped values". This includes w_self. Don't use ``w_`` in application level python only code. -- not more than 4 directory nesting levels - -- never use plural names in directory and file names - - Test conventions --------------------- - -- each module has a canonical test-script (using the "unittests" - package if feasible) +---------------- - test/test_exactmodulename.py - -- each TestCase is named after the class it tests - - class TestExactClass(unittest.TestCase): - -- all other testcases are assumed to test single/more functions - or something that spans more than one class +- adding features usually requires adding appropriate tests. + (It often even makes sense to first write the tests so that you are + sure that they actually can fail.) + +- All over the pypy source code there are test/ directories + which contain unittests. Such scripts can usually be executed + directly or are collectively run by pypy/test_all.py - every non-test file is forbidden to start with "t" -- each test directory needs a copy of pypy/tool/autopath.py. +- each test directory needs a copy of pypy/tool/autopath.py which + upon import will make sure that sys.path contains the directory + where 'pypy' is in. - see some more information about tests at the test-design_ document. - ------------------------------------------------------------------------------------------- - -.. _test-design: ../devel/testdesign.html From hpk at codespeak.net Thu Oct 30 18:52:49 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 30 Oct 2003 18:52:49 +0100 (MET) Subject: [pypy-svn] rev 2126 - pypy/trunk/doc/devel Message-ID: <20031030175249.5AC6D5B650@thoth.codespeak.net> Author: hpk Date: Thu Oct 30 18:52:47 2003 New Revision: 2126 Modified: pypy/trunk/doc/devel/coding-style.txt pypy/trunk/doc/devel/testdesign.txt Log: minor rest tweaks Modified: pypy/trunk/doc/devel/coding-style.txt ============================================================================== --- pypy/trunk/doc/devel/coding-style.txt (original) +++ pypy/trunk/doc/devel/coding-style.txt Thu Oct 30 18:52:47 2003 @@ -61,3 +61,5 @@ where 'pypy' is in. - see some more information about tests at the test-design_ document. + +.. _test-design: ../devel/testdesign.html Modified: pypy/trunk/doc/devel/testdesign.txt ============================================================================== --- pypy/trunk/doc/devel/testdesign.txt (original) +++ pypy/trunk/doc/devel/testdesign.txt Thu Oct 30 18:52:47 2003 @@ -26,7 +26,7 @@ from pypy.tool import test of which the first line determines the package path automatically by searching -for 'pypy' among the parents of the test-file's directory. The second +for **pypy** among the parents of the test-file's directory. The second line imports PyPy's test-hook of which ''test.main()'' is the most important and is usually the last line of the testfile. For more info please refer to a pypy-dev mail_ where the current testing From sanxiyn at codespeak.net Thu Oct 30 19:46:15 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 30 Oct 2003 19:46:15 +0100 (MET) Subject: [pypy-svn] rev 2127 - pypy/trunk/src/pypy/translator Message-ID: <20031030184615.7A2285B5E4@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 30 19:46:14 2003 New Revision: 2127 Modified: pypy/trunk/src/pypy/translator/transform.py Log: documented what the hell complex and verbose transform codes are actually doing. let's refactor it. Python shall be an executable pseudocode! Modified: pypy/trunk/src/pypy/translator/transform.py ============================================================================== --- pypy/trunk/src/pypy/translator/transform.py (original) +++ pypy/trunk/src/pypy/translator/transform.py Thu Oct 30 19:46:14 2003 @@ -5,6 +5,10 @@ from pypy.objspace.flow.model import Variable, Constant, SpaceOperation from pypy.translator.annotation import Annotator +# b = newlist(a) +# d = mul(b, int c) +# --> d = alloc_and_set(c, a) + def transform_allocate(self): for block, ann in self.annotated.iteritems(): operations = block.operations[:] @@ -22,6 +26,10 @@ op2.result) block.operations[i:i+2] = [new_op] +# c = newslice(a, b, None) +# e = getitem(d, c) +# --> e = getslice(d, a, b) + def transform_slice(self): for block, ann in self.annotated.iteritems(): operations = block.operations[:] From sanxiyn at codespeak.net Thu Oct 30 20:37:36 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Thu, 30 Oct 2003 20:37:36 +0100 (MET) Subject: [pypy-svn] rev 2128 - pypy/trunk/doc/devel Message-ID: <20031030193736.587385B36F@thoth.codespeak.net> Author: sanxiyn Date: Thu Oct 30 20:37:34 2003 New Revision: 2128 Modified: pypy/trunk/doc/devel/coding-style.txt Log: rst fix: bullet non-test files are forbidden to start with test_, not t. Modified: pypy/trunk/doc/devel/coding-style.txt ============================================================================== --- pypy/trunk/doc/devel/coding-style.txt (original) +++ pypy/trunk/doc/devel/coding-style.txt Thu Oct 30 20:37:34 2003 @@ -33,10 +33,11 @@ Object Spaces --------------- -- objectspace classes are always spelled "ObjSpace" - e.g. TrivialObjSpace - StdObjSpace - FlowObjSpace +- objectspace classes are always spelled "ObjSpace". e.g. + + - TrivialObjSpace + - StdObjSpace + - FlowObjSpace - at interpreter level and in ObjSpace all boxed values have a leading ``w_`` to indicate "wrapped values". This @@ -54,7 +55,7 @@ which contain unittests. Such scripts can usually be executed directly or are collectively run by pypy/test_all.py -- every non-test file is forbidden to start with "t" +- every non-test file is forbidden to start with ``test_``. - each test directory needs a copy of pypy/tool/autopath.py which upon import will make sure that sys.path contains the directory From hpk at codespeak.net Thu Oct 30 20:45:43 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Thu, 30 Oct 2003 20:45:43 +0100 (MET) Subject: [pypy-svn] rev 2129 - pypy/trunk/doc/devel Message-ID: <20031030194543.B06195B36F@thoth.codespeak.net> Author: hpk Date: Thu Oct 30 20:45:42 2003 New Revision: 2129 Modified: pypy/trunk/doc/devel/coding-style.txt Log: generalize silly "t*" rule to something like "be nice to tab-completion on shell level". Modified: pypy/trunk/doc/devel/coding-style.txt ============================================================================== --- pypy/trunk/doc/devel/coding-style.txt (original) +++ pypy/trunk/doc/devel/coding-style.txt Thu Oct 30 20:45:42 2003 @@ -19,6 +19,9 @@ - not more than 4 directory nesting levels +- it's appreciated if you manage to name files in a directory + so that tab-completion on the shell level is as easy as possible. + Committing ---------- @@ -55,8 +58,6 @@ which contain unittests. Such scripts can usually be executed directly or are collectively run by pypy/test_all.py -- every non-test file is forbidden to start with ``test_``. - - each test directory needs a copy of pypy/tool/autopath.py which upon import will make sure that sys.path contains the directory where 'pypy' is in. From sanxiyn at codespeak.net Fri Oct 31 04:48:45 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 31 Oct 2003 04:48:45 +0100 (MET) Subject: [pypy-svn] rev 2136 - pypy/trunk/src/pypy/translator/tool Message-ID: <20031031034845.0D23C5B264@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 31 04:48:44 2003 New Revision: 2136 Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py Log: Fix for 2.2. isinstance(X, bool) is illegal. Modified: pypy/trunk/src/pypy/translator/tool/buildcl.py ============================================================================== --- pypy/trunk/src/pypy/translator/tool/buildcl.py (original) +++ pypy/trunk/src/pypy/translator/tool/buildcl.py Fri Oct 31 04:48:44 2003 @@ -24,7 +24,8 @@ return Literal(s) def writelisp(gen, obj): - if isinstance(obj, (bool, int, type(None), str)): + #if isinstance(obj, (bool, int, type(None), str)): + if isinstance(obj, (int, type(None), str)): return gen.conv(obj) if isinstance(obj, (tuple, list)): content = ' '.join([writelisp(gen, elt) for elt in obj]) From sanxiyn at codespeak.net Fri Oct 31 04:49:28 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 31 Oct 2003 04:49:28 +0100 (MET) Subject: [pypy-svn] rev 2137 - pypy/trunk/src/pypy/objspace/flow/test Message-ID: <20031031034928.017A85B264@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 31 04:49:28 2003 New Revision: 2137 Modified: pypy/trunk/src/pypy/objspace/flow/test/test_model.py (props changed) Log: Fixeol From arigo at codespeak.net Fri Oct 31 15:51:25 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 31 Oct 2003 15:51:25 +0100 (MET) Subject: [pypy-svn] rev 2138 - pypy/trunk/doc/translation Message-ID: <20031031145125.6FD0D5B807@thoth.codespeak.net> Author: arigo Date: Fri Oct 31 15:51:24 2003 New Revision: 2138 Added: pypy/trunk/doc/translation/annotation.txt Log: Added a design proposal. Added: pypy/trunk/doc/translation/annotation.txt ============================================================================== --- (empty file) +++ pypy/trunk/doc/translation/annotation.txt Fri Oct 31 15:51:24 2003 @@ -0,0 +1,146 @@ +Mixed control flow / annotation pass +==================================== + +Say we want to make the control flow graph and type inference +on the following program:: + + def f(n): + if n >= 2: + return n * f(n-1) + else: + return 1 + +Suppose that we know that ``f`` takes an ``int`` argument. +We start with the flow objspace applied to the entry point:: + + StartBlock(v1): + v2 = ge(v1, 2) + exitswitch(v2) + +We suspend the flow objspace here, and we immediately do the +type inference on this block:: + + Analyse(StartBlock): + v1 ----> X1 type(X1)=int + v2 ----> X2 type(X2)=bool + +The notation is as follows. Everything at the right of the arrows +lives in a "big heap" of objects and annotations; a object is like a +CPython ``PyObject`` object structure in the heap, althought it can +here be unknown (X1, X2, X3...). Annotations give some information +about the unknown heap objects. The arrows represent binding from +variables to objects. + +We perform the type inference early because it may give interesting +information about ``v2``, the variable whose truth-value determines in +which block we must continue. In this case we don't know if ``v2`` will +be True or False, but in some cases type inference can help (for +example, in code like ``a, b = c, d`` the type inference can tell that +the right-hand tuple is of length two and so no ValueError will be +thrown for unpacking a tuple of the wrong length). + +Let's come back to StartBlock. We add an exit corresponding to the case +``v2==True``, jumping to Block2 which we flow-analyse now:: + + Block2(v3): + v4 = sub(v3, 1) + v5 = newtuple(v4) + v6 = newdict() + v7 = call(f, v5, v6) + v8 = mul(v3, v7) + jump to ReturnBlock(v8) + +This is simplified into:: + + Block2(v3): + v4 = sub(v3, 1) + v7 = simple_call(f, v4) + v8 = mul(v3, v7) + jump to ReturnBlock(v8) + +Type inference:: + + Analyse(Block2): + v3 ------------> X1 # copied from StartBlock + v4 ------------> X4 type(X4)=int + v7 ------------> failure + +It fails at the simple_call to f, because we don't know yet anything +about the return value of f. We suspend the analysis of Block2 and +resume at some other non-blocked point -- for example, we can now +consider adding an exit to StartBlock for the case ``v2==False``, +jumping to Block3:: + + Block3: + v9 = 1 + jump to ReturnBlock(v9) + + Analyse(Block3): + v9 --------> 1 # and we have type(1)=int automatically + +Then we proceed to ReturnBlock:: + + ReturnBlock(retval): + (empty, just returns retval) + + Analyse(ReturnBlock): + retval --------> 1 + +And we are done. We can now try to resume the suspended analysis of +Block2 -- in practice it is easier to just restart it:: + + Analyse(Block2): + v3 ------------> X1 # copied from StartBlock + v4 ------------> X4 type(X4)=int + v7 ------------> 1 # because that's the retval of f + v8 ------------> X8 type(X8)=int eq(X1,X8)=True # because X8=X1*1 + +And now is the second branch into ReturnBlock. We must combine the +annotations coming from the two branches:: + + Intersection(ReturnBlock): + previous annotations for retval -------> 1 type(1)=int + new annotations for retval ------------> X8 type(X8)=int eq(X8,X1)=True + intersection of both is retval --------> X10 type(X10)=int + +We invalidate the analysis of the blocks that depend on this new result, +namely ReturnBlock, which in turn invalidates the analysis of Block2 +which depended on the return value. Then we can restart it once more:: + + Analyse(Block2): + v3 ------------> X1 # with type(X1)=int + v4 ------------> X4 type(X4)=int + v7 ------------> X10 # with type(X10)=int + v8 ------------> X11 type(X11)=int + +Again, we must redo the intersection of the two branches +that enter ReturnBlock:: + + Intersection(ReturnBlock): + previous annotations for retval -------> X10 type(X10)=int + new annotations for retval ------------> X11 type(X11)=int + intersection doesn't change any more. + +Now the annotations are stable, and we are done. In the final version +summarized below, all the objects that are used in the variables and +in retval are properly annotated:: + + Bindings: + v1 ------> X1 + v2 ------> X2 + v3 ------> X1 + v4 ------> X4 + v7 ------> X10 + v8 ------> X11 + v9 ------> 1 + retval --> X10 + + Annotations: + type(X1)=int + type(X2)=bool + type(X4)=int + type(X10)=int + type(X11)=int + +The bindings are implemented as a dictionary, and the annotations as +an AnnSet instance. From arigo at codespeak.net Fri Oct 31 16:18:05 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 31 Oct 2003 16:18:05 +0100 (MET) Subject: [pypy-svn] rev 2139 - pypy/trunk/doc/translation Message-ID: <20031031151805.6EF765B807@thoth.codespeak.net> Author: arigo Date: Fri Oct 31 16:18:04 2003 New Revision: 2139 Modified: pypy/trunk/doc/translation/annotation.txt Log: About lists and mutable objects. Modified: pypy/trunk/doc/translation/annotation.txt ============================================================================== --- pypy/trunk/doc/translation/annotation.txt (original) +++ pypy/trunk/doc/translation/annotation.txt Fri Oct 31 16:18:04 2003 @@ -1,6 +1,9 @@ Mixed control flow / annotation pass ==================================== +Factorial +--------- + Say we want to make the control flow graph and type inference on the following program:: @@ -144,3 +147,79 @@ The bindings are implemented as a dictionary, and the annotations as an AnnSet instance. + + +Whole-program analysis +---------------------- + +A program of more than once function is analysed in exactly the same way, +starting from an entry point and following calls. We have a cache of all +the blocks that the flow objspace produced, and a list of pending blocks +that we have to type-analyse. When the analysis of a block temporarily +fails (as above for the first recursive call to ``f``) we move the block +at the end of the pending list. There is only one heap of annotations +for the whole program, so that we can track where the objects come from +and go through the whole program. (This makes separate compilation very +difficult, I guess.) + + +Empty lists +----------- + +Nothing special is required for empty lists. Let's try:: + + def g(a, n): + a.append(n) + + def f(): + b = [] + g(b, 5) + g(b, 6) + +As above, after simplification:: + + F_StartBlock(): + v1 = newlist() + v2 = simple_call(g, v1, 5) + v3 = simple_call(g, v1, 6) + + Analyse(F_StartBlock): + v1 -------> X1 type(X1)=list len(X1)=0 getitem(X1,?)=? + v2 -------> crash + +The ``?`` is a special value meaning ``no analysis information``. The type analysis fails because of the calls to ``g``, but it triggers the analysis of ``g`` with the input arguments' annotations:: + + G_StartBlock(v4, v5): + v6 = getattr(v4, 'append') + v7 = simple_call(v6, v5) + + Analyse(G_StartBlock): + v4 -------> X1 # from the call above + v5 -------> 5 # from the call above + v6 -------> X6 im_self(X6)=X1 im_func(X6)=list_append + v7 -------> None REMOVE{len(X1)=0} getitem(X1,?)=5 + +Note that the call to list_append corrects the annotations about ``X1``. +This would invalidate any type inference that would depend on the modified +annotations. (Hopefully, we eventually reach a fixpoint; this could be +enforced by requiring that we can only either remove annotations or give +a value to a ``?``.) + +Only after this can the analysis of ``F_StartBlock`` proceed, and +now we know that v1 points to the list ``X1`` with the correct annotations: +unknown length, all items are ``5``. + +In the above example I also show a second call to ``g(b, 6)``, which +triggers an intersection on the input argument types of ``g`` which was +previously thought to be used with ``5`` only:: + + Intersection(G_StartBlock): + previous annotations for v5 -------> 5 type(5)=int + new annotations for v5 ------------> 6 type(6)=int + intersection of both is v5 --------> X5 type(X5)=int + +And so this time the list ``X1`` is updated with:: + + getitem(X1,?)=X5 + +and now we know that we have a list of integers. From hpk at codespeak.net Fri Oct 31 16:46:28 2003 From: hpk at codespeak.net (hpk at codespeak.net) Date: Fri, 31 Oct 2003 16:46:28 +0100 (MET) Subject: [pypy-svn] rev 2140 - pypy/trunk/src/pypy/tool Message-ID: <20031031154628.259225B36F@thoth.codespeak.net> Author: hpk Date: Fri Oct 31 16:46:27 2003 New Revision: 2140 Removed: pypy/trunk/src/pypy/tool/FileTools.py Log: removed stale old tool Deleted: /pypy/trunk/src/pypy/tool/FileTools.py ============================================================================== --- /pypy/trunk/src/pypy/tool/FileTools.py Fri Oct 31 16:46:27 2003 +++ (empty file) @@ -1,211 +0,0 @@ -import os -from StringIO import StringIO - -True,False = (1==1),(0==1) - -def FileToolsError(Exception): pass - -def copy(outFile='',outStream=None,inFile='',inString='',inStream=None): - """synopsis:copy(outFile='',outStream=None,inFile='',inString='',inStream=None) - If streams (file handles) are used, they are NOT closed by copy.""" - - if inFile: - fs = open(inFile) - elif inString: - fs = StringIO(inString) - elif inStream is not None: - fs = inStream - else: - raise FileToolsError('copy need valid input source (string, stream, filename)') - - if outFile: - if os.path.isfile(outFile): - #errorMsg = 'copy: the destination file %s exists already' % outFile - #raise FileToolsError(errorMsg) - pass - of = open(outFile,'w') - elif outStream: - of = outStream - else: - raise FileToolsError('copy need valid output source (stream, filename)') - - cs = 1024 - tmp = fs.read(cs) - while tmp: - of.write(tmp) - tmp = fs.read(cs) - - # only close I/O streams if they were opened in function - if inFile: - fs.close() - if outFile: - of.close() - -################################################### -# simple RCS wrapper -################################################### - -RCSPATH = "/usr/bin" -CI = os.path.join(RCSPATH,"ci") -CO = os.path.join(RCSPATH,"co") -RLOG = os.path.join(RCSPATH,"rlog") -RDIFF = os.path.join(RCSPATH,"rcsdiff") -RMERGE = os.path.join(RCSPATH,"rcsmerge") -WLEN = len("revision") - -class PyRCSError(Exception):pass -class PyRCSFileNotBoundError(PyRCSError):pass - -class PyRCS: - """PyRCS is a thin python wrapper for the RCS versioning system. Only a few RCS - features can be accessed.""" - - def __init__(self,fileName=None,user="UnknownUser"): - if fileName is not None: - if not os.path.isfile(fileName): - raise PyRCSFileNotBoundError("init: fileName %s was given but does not exist" % fileName) - if not os.path.isfile(fileName+',v'): - os.popen(CI + " -l -t-newFile -w%s %s" % (user,fileName)) - self._fileName = fileName - self._user = user - - def move(self,newName): - if self._fileName is None: - raise PyRCSFileNotBoundError("fileName is None") - try: - copy(outFile=newName,inFile=self._fileName) - except FileToolsError: - raise PyRCSError("Couldn't move %s" % self._fileName) - try: - copy(outFile=newName+',v',inFile=self._fileName+',v') - except FileToolsError: - os.unlink(newName) - raise PyRCSError("Couldn't move %s" % self._fileName+',v') - os.unlink(self._fileName) - os.unlink(self._fileName+',v') - self._fileName = newName - - - def get(self,version=""): - if self._fileName is None: - raise PyRCSFileNotBoundError() - - outStream = StringIO() - copy(inStream=os.popen(CO +" -p%s %s" % (version,self._fileName)),outStream=outStream) - outStream.seek(0) - - return outStream - - def getDiff(self,v1="",v2=""): - if self._fileName is None: - raise PyRCSFileNotBoundError() - - outStream = StringIO() - copy(inStream=os.popen(RDIFF +" -r%s -r%s %s" % (v1,v2,self._fileName)),outStream=outStream) - outStream.seek(0) - - return outStream - - def user(self,user=None): - if user != None: - self._user = user - - return self._user - - def goBack(self): - lst = self.getVersions() - if len(lst) < 2: - return False - currVer = lst[0][0] - prevVer = lst[1][0] - res = os.system(RMERGE + " -r%s -r%s %s" % (currVer,prevVer,self._fileName)) - if not res: - os.popen(CI + " -l -mbackToPrevVersion -w%s %s" % (self._user,self._fileName)) - return True - else: - inStream = self.get(currVer) - copy(outFile=self._fileName,inStream = inStream) - return False - - - def update(self,inStream): - copy(outFile=self._fileName,inStream = inStream) - os.popen(CI + " -l -mnewVersion -w%s %s" % (self._user,self._fileName)) - - def new(self,fileName,inStream): - self._fileName = fileName - copy(outFile=self._fileName,inStream = inStream) - os.popen(CI + " -l -t-newFile -w%s %s" % (self._user,self._fileName)) - - def getVersions(self): - if self._fileName is None: - raise PyRCSFileNotBoundError() - - vlist = [] - out = os.popen(RLOG + " %s" % self._fileName).readlines() - newVersion = False - for line in out: - if len(line) > WLEN and line[:WLEN] == "revision": - version = line[WLEN:].strip().split()[0] - newVersion = True - if newVersion and line[:4] == "date": - parts = line.split() - date = parts[1] + " " + parts[2] - date = date[:-1] - author = parts[4] - if author: - author = author[:-1] - - newVersion = False - vlist.append((version,date,author)) - - - return vlist - -if __name__ == "__main__": - def test1(): - fileName = "testing/rcsTestFile" - newName = "testing/movedTestFile" - if os.path.isfile(fileName): - os.unlink(fileName) - if os.path.isfile(fileName+',v'): - os.unlink(fileName+',v') - if os.path.isfile(newName): - os.unlink(newName) - if os.path.isfile(newName+',v'): - os.unlink(newName+',v') - rcs = PyRCS() - rcs.new(fileName,StringIO('Dies ist ein Testfile')) - assert rcs.get().read() == 'Dies ist ein Testfile' - versions = rcs.getVersions() - assert len(versions) == 1 - assert versions[0][0] == '1.1' - rcs.update(StringIO('neuer Inhalt')) - assert rcs.get().read() == 'neuer Inhalt' - versions = rcs.getVersions() - print versions - assert len(versions) == 2 - assert versions[0][0] == '1.2' - rcs.move(newName) - del(rcs) - rcs = PyRCS(newName) - assert rcs.get().read() == 'neuer Inhalt' - versions = rcs.getVersions() - assert len(versions) == 2 - assert versions[0][0] == '1.2' - print rcs.getDiff('1.1','1.2').read() - rcs.update(StringIO('dritte Version')) - print rcs.getDiff('1.2','1.3').read() - rcs.goBack() - print rcs.getVersions() - del(rcs) - - def test2(): - filename = 'testing/47244641499__Windows__5.x.txt' - rcs = PyRCS(filename) - print rcs.getVersions() - text = rcs.get().read() - print - print text - - test2() From arigo at codespeak.net Fri Oct 31 17:12:37 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 31 Oct 2003 17:12:37 +0100 (MET) Subject: [pypy-svn] rev 2141 - pypy/trunk/src/pypy/translator/test Message-ID: <20031031161237.A35F05B36F@thoth.codespeak.net> Author: arigo Date: Fri Oct 31 17:12:37 2003 New Revision: 2141 Modified: pypy/trunk/src/pypy/translator/test/snippet.py pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Log: New test, showing the slightly weird behavior of 'and' (see control flow graph). Modified: pypy/trunk/src/pypy/translator/test/snippet.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/snippet.py (original) +++ pypy/trunk/src/pypy/translator/test/snippet.py Fri Oct 31 17:12:37 2003 @@ -198,3 +198,9 @@ ptr += 1 bitmask += 1 return powerset + +def s_and(x, y): + if x and y: + return 'yes' + else: + return 'no' Modified: pypy/trunk/src/pypy/translator/test/test_pyrextrans.py ============================================================================== --- pypy/trunk/src/pypy/translator/test/test_pyrextrans.py (original) +++ pypy/trunk/src/pypy/translator/test/test_pyrextrans.py Fri Oct 31 17:12:37 2003 @@ -72,6 +72,13 @@ half = self.build_cfunc(t.half_of_n) self.assertEquals(half(10), 5) + def test_and(self): + sand = self.build_cfunc(t.s_and) + self.assertEquals(sand(5, 6), "yes") + self.assertEquals(sand(5, 0), "no") + self.assertEquals(sand(0, 6), "no") + self.assertEquals(sand(0, 0), "no") + class NoTypePyrexGenTestCase(TypedPyrexGenTestCase): def build_cfunc(self, func): From arigo at codespeak.net Fri Oct 31 17:30:11 2003 From: arigo at codespeak.net (arigo at codespeak.net) Date: Fri, 31 Oct 2003 17:30:11 +0100 (MET) Subject: [pypy-svn] rev 2142 - pypy/trunk/doc/translation Message-ID: <20031031163011.636C15B36F@thoth.codespeak.net> Author: arigo Date: Fri Oct 31 17:30:10 2003 New Revision: 2142 Modified: pypy/trunk/doc/translation/annotation.txt Log: A short paragraph about intersections between mutable objects. Modified: pypy/trunk/doc/translation/annotation.txt ============================================================================== --- pypy/trunk/doc/translation/annotation.txt (original) +++ pypy/trunk/doc/translation/annotation.txt Fri Oct 31 17:30:10 2003 @@ -152,7 +152,7 @@ Whole-program analysis ---------------------- -A program of more than once function is analysed in exactly the same way, +A program of more than one function is analysed in exactly the same way, starting from an entry point and following calls. We have a cache of all the blocks that the flow objspace produced, and a list of pending blocks that we have to type-analyse. When the analysis of a block temporarily @@ -223,3 +223,16 @@ getitem(X1,?)=X5 and now we know that we have a list of integers. + +Note that during this whole process the same list is represented by ``X1``. +This is important, so that any code anywhere that could modify the list +can kill invalid annotations about it. Intersection must be clever about +mutable objects: we have seen above an example where ``retval`` could map +to ``X10`` or ``X11``, and the intersection said it was fine because they +had the same annotations. It would not be fine if ``X10`` and ``X11`` +could be of a mutable type. In this case we must force ``X10==X11`` for +the whole program. In other words the representation choosen for a list +depends on all the places where this list could go, and these places +themselves use a representation that depends on all the lists that could +come at this point. All these places and lists will use a common, +most general representation. From sanxiyn at codespeak.net Fri Oct 31 17:47:02 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 31 Oct 2003 17:47:02 +0100 (MET) Subject: [pypy-svn] rev 2143 - pypy/trunk/src/pypy/translator Message-ID: <20031031164702.635975B36F@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 31 17:47:01 2003 New Revision: 2143 Modified: pypy/trunk/src/pypy/translator/translator.py Log: Add call() and dis() to the frontend. Notes optional input_arg_types argument to pyrex() and cl(). Modified: pypy/trunk/src/pypy/translator/translator.py ============================================================================== --- pypy/trunk/src/pypy/translator/translator.py (original) +++ pypy/trunk/src/pypy/translator/translator.py Fri Oct 31 17:47:01 2003 @@ -18,8 +18,11 @@ a = t.annotate([int]) # pass the list of args types a.simplify() # simplification by annotator + t.call(arg) # call original function + t.dis() # bytecode disassemble + f = t.compile() # pyrex compilation - assert f(arg) == func(arg) + assert f(arg) == t.call(arg) # sanity check Some functions are provided for the benefit of interactive testing. Try dir(test) for list of current snippets. @@ -83,7 +86,12 @@ return self.py_source def pyrex(self, input_arg_types=None): - """Returns Pyrex translation.""" + """pyrex(self, [input_arg_types]) -> Pyrex translation + + Returns Pyrex translation. If input_arg_types is provided, + returns type annotated translation. Subsequent calls are + not affected by this. + """ g = GenPyrex(self.flowgraph) if input_arg_types is not None: g.annotate(input_arg_types) @@ -91,10 +99,17 @@ g.setannotator(self.annotator) return g.emitcode() - def cl(self): - """Returns Common Lisp translation.""" + def cl(self, input_arg_types=None): + """cl(self, [input_arg_types]) -> Common Lisp translation + + Returns Common Lisp translation. If input_arg_types is provided, + returns type annotated translation. Subsequent calls are + not affected by this. + """ g = GenCL(self.flowgraph) - if self.annotator: + if input_arg_types is not None: + g.annotate(input_arg_types) + elif self.annotator: g.ann = self.annotator return g.emitcode() @@ -109,6 +124,15 @@ mod = make_module_from_pyxstring(name, udir, pyxcode) return getattr(mod, name) + def call(self, *args): + """Calls underlying Python function.""" + return self.entrypoint(*args) + + def dis(self): + """Disassembles underlying Python function to bytecodes.""" + from dis import dis + dis(self.entrypoint) + if __name__ == '__main__': from pypy.translator.test import snippet as test From sanxiyn at codespeak.net Fri Oct 31 18:08:10 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 31 Oct 2003 18:08:10 +0100 (MET) Subject: [pypy-svn] rev 2144 - pypy/trunk/src/pypy/translator Message-ID: <20031031170810.ADD925B36F@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 31 18:08:09 2003 New Revision: 2144 Modified: pypy/trunk/src/pypy/translator/simplify.py pypy/trunk/src/pypy/translator/transform.py Log: Documentation enhancements. Modified: pypy/trunk/src/pypy/translator/simplify.py ============================================================================== --- pypy/trunk/src/pypy/translator/simplify.py (original) +++ pypy/trunk/src/pypy/translator/simplify.py Fri Oct 31 18:08:09 2003 @@ -1,13 +1,8 @@ +"""Flow Graph Simplification """ -generate Pyrex files from the flowmodel. -""" from pypy.objspace.flow.model import * -# debug -from pypy.translator.genpyrex import GenPyrex - - def eliminate_empty_blocks(graph): """Eliminate basic blocks that do not contain any operations. When this happens, we need to replace the preceeding link with the @@ -66,7 +61,7 @@ traverse(visit, graph) def simplify_graph(graph): - """apply all the existing optimisations to the graph""" + """Apply all the existing optimisations to the graph.""" eliminate_empty_blocks(graph) join_blocks(graph) return graph Modified: pypy/trunk/src/pypy/translator/transform.py ============================================================================== --- pypy/trunk/src/pypy/translator/transform.py (original) +++ pypy/trunk/src/pypy/translator/transform.py Fri Oct 31 18:08:09 2003 @@ -1,4 +1,7 @@ -"""Peephole Flow Graph Transformation +"""Flow Graph Transformation + +The difference between simplification and transformation is that +transformation may introduce new space operation. """ import autopath @@ -10,6 +13,7 @@ # --> d = alloc_and_set(c, a) def transform_allocate(self): + """Transforms [a] * b to alloc_and_set(b, a) where b is int.""" for block, ann in self.annotated.iteritems(): operations = block.operations[:] n_op = len(operations) @@ -31,6 +35,7 @@ # --> e = getslice(d, a, b) def transform_slice(self): + """Transforms a[b:c] to getslice(a, b, c).""" for block, ann in self.annotated.iteritems(): operations = block.operations[:] n_op = len(operations) @@ -47,5 +52,6 @@ block.operations[i:i+2] = [new_op] def transform_graph(ann): + """Apply set of transformations available.""" transform_allocate(ann) transform_slice(ann) From sanxiyn at codespeak.net Fri Oct 31 23:47:56 2003 From: sanxiyn at codespeak.net (sanxiyn at codespeak.net) Date: Fri, 31 Oct 2003 23:47:56 +0100 (MET) Subject: [pypy-svn] rev 2145 - pypy/trunk/doc Message-ID: <20031031224756.9CC4F5B815@thoth.codespeak.net> Author: sanxiyn Date: Fri Oct 31 23:47:54 2003 New Revision: 2145 Removed: pypy/trunk/doc/nested_whiles.dot pypy/trunk/doc/nested_whiles.pdf Log: Deleted dot graph and its pdf. Can be regenerated easily, and does not belong here. Deleted: /pypy/trunk/doc/nested_whiles.dot ============================================================================== --- /pypy/trunk/doc/nested_whiles.dot Fri Oct 31 23:47:54 2003 +++ (empty file) @@ -1,69 +0,0 @@ - -digraph test { -node [fontname=Times]; -edge [fontname=Times]; -NodeBranch25 [shape=diamond, label="Branch\nargs=[]"]; -edge [style=solid, label="target"]; NodeBranch25 -> NodeBasicBlock26; -NodeBasicBlock21 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v95), var(v96), var(v97), var(v98), var(v99), var(v100)]\nlocals=[var(v95), var(v96), var(v97), var(v98), var(v99), var(v100)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock21 -> NodeBranch22; -NodeConditionalBranch5 [shape=diamond, label="ConditionalBranch\ncondition=var(v64)"]; -edge [style=dashed, label="elsebranch"]; NodeConditionalBranch5 -> NodeBranch6; -edge [style=dashed, label="ifbranch"]; NodeConditionalBranch5 -> NodeBranch13; -NodeBranch8 [shape=diamond, label="Branch\nargs=[var(v59), var(v60), var(v61), var(v62), var(v63), var(v64)]"]; -edge [style=solid, label="target"]; NodeBranch8 -> NodeBasicBlock9; -NodeBasicBlock2 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v17), var(v18)]\ndead=True\nlocals=[var(v17), var(v18)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock2 -> NodeBranch3; -NodeBasicBlock19 [shape=box, label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; -edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock19 -> NodeBasicBlock16; -edge [style=solid, label="branch"]; NodeBasicBlock19 -> NodeBranch20; -NodeBranch18 [shape=diamond, label="Branch\nargs=[]"]; -edge [style=solid, label="target"]; NodeBranch18 -> NodeBasicBlock19; -NodeEndBranch12 [shape=circle, label="EndBranch\nreturnvalue=var(v83)"]; - -NodeBasicBlock7 [shape=box, label="EggBlock\noperations=()\nbooloutcome=False\ninput_args=[]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; -edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock7 -> NodeBasicBlock4; -edge [style=solid, label="branch"]; NodeBasicBlock7 -> NodeBranch8; -NodeBasicBlock23 [shape=box, label="SpamBlock\noperations=(add(var(v104), const('!')) -> var(v108),)\ninput_args=[var(v102), var(v103), var(v104), var(v105), var(v106)]\nlocals=[var(v102), var(v103), var(v104), var(v105), var(v106)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock23 -> NodeBranch24; -NodeBranch27 [shape=diamond, label="Branch\nargs=[var(v67), var(v68), var(v88), var(v87), var(v71)]"]; -edge [style=solid, label="target"]; NodeBranch27 -> NodeBasicBlock16; -NodeBranch20 [shape=diamond, label="Branch\nargs=[var(v67), var(v68), var(v69), var(v70), var(v71), var(v73)]"]; -edge [style=solid, label="target"]; NodeBranch20 -> NodeBasicBlock21; -nested_whiles [shape=box, label="FunctionGraph\n\l def nested_whiles(i, j):\l s = ''\l z = 5\l while z > 0:\l z = z - 1\l u = i\l while u < j:\l u = u + 1\l s = s + '.'\l s = s + '!'\l return s\l\nfunctionname='nested_whiles'"]; -edge [style=solid, label="startblock"]; nested_whiles -> NodeBasicBlock0; -NodeBranch13 [shape=diamond, label="Branch\nargs=[]"]; -edge [style=solid, label="target"]; NodeBranch13 -> NodeBasicBlock14; -NodeBasicBlock9 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v75), var(v76), var(v77), var(v78), var(v79), var(v80)]\nlocals=[var(v75), var(v76), var(v77), var(v78), var(v79), var(v80)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock9 -> NodeBranch10; -NodeBranch6 [shape=diamond, label="Branch\nargs=[]"]; -edge [style=solid, label="target"]; NodeBranch6 -> NodeBasicBlock7; -NodeBasicBlock16 [shape=box, label="SpamBlock\noperations=(lt(var(v70), var(v68)) -> var(v73),)\ninput_args=[var(v67), var(v68), var(v69), var(v70), var(v71)]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock16 -> NodeConditionalBranch17; -NodeBasicBlock4 [shape=box, label="SpamBlock\noperations=(gt(var(v63), const(0)) -> var(v64),)\ninput_args=[var(v59), var(v60), var(v61), var(v62), var(v63)]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock4 -> NodeConditionalBranch5; -NodeBasicBlock11 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v81), var(v82), var(v83), var(v84), var(v85)]\nlocals=[var(v81), var(v82), var(v83), var(v84), var(v85)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock11 -> NodeEndBranch12; -NodeConditionalBranch17 [shape=diamond, label="ConditionalBranch\ncondition=var(v73)"]; -edge [style=dashed, label="elsebranch"]; NodeConditionalBranch17 -> NodeBranch18; -edge [style=dashed, label="ifbranch"]; NodeConditionalBranch17 -> NodeBranch25; -NodeBasicBlock0 [shape=box, label="SpamBlock\noperations=()\ninput_args=[var(v15), var(v16)]\nlocals=[var(v15), var(v16)]"]; -edge [style=solid, label="branch"]; NodeBasicBlock0 -> NodeBranch1; -NodeBranch3 [shape=diamond, label="Branch\nargs=[var(v17), var(v18), const(''), const(None), const(5)]"]; -edge [style=solid, label="target"]; NodeBranch3 -> NodeBasicBlock4; -NodeBasicBlock26 [shape=box, label="EggBlock\noperations=(add(var(v70), const(1)) -> var(v87), add(var(v69), const('.')) -> var(v88))\nbooloutcome=True\ninput_args=[]\nlocals=[var(v67), var(v68), var(v69), var(v70), var(v71)]"]; -edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock26 -> NodeBasicBlock16; -edge [style=solid, label="branch"]; NodeBasicBlock26 -> NodeBranch27; -NodeBranch15 [shape=diamond, label="Branch\nargs=[var(v59), var(v60), var(v61), var(v59), var(v66)]"]; -edge [style=solid, label="target"]; NodeBranch15 -> NodeBasicBlock16; -NodeBranch24 [shape=diamond, label="Branch\nargs=[var(v102), var(v103), var(v108), var(v105), var(v106)]"]; -edge [style=solid, label="target"]; NodeBranch24 -> NodeBasicBlock4; -NodeBasicBlock14 [shape=box, label="EggBlock\noperations=(sub(var(v63), const(1)) -> var(v66),)\nbooloutcome=True\ninput_args=[]\nlocals=[var(v59), var(v60), var(v61), var(v62), var(v63)]"]; -edge [style=dotted, weight=0, label="prevblock"]; NodeBasicBlock14 -> NodeBasicBlock4; -edge [style=solid, label="branch"]; NodeBasicBlock14 -> NodeBranch15; -NodeBranch1 [shape=diamond, label="Branch\nargs=[var(v15), var(v16)]"]; -edge [style=solid, label="target"]; NodeBranch1 -> NodeBasicBlock2; -NodeBranch22 [shape=diamond, label="Branch\nargs=[var(v95), var(v96), var(v97), var(v98), var(v99)]"]; -edge [style=solid, label="target"]; NodeBranch22 -> NodeBasicBlock23; -NodeBranch10 [shape=diamond, label="Branch\nargs=[var(v75), var(v76), var(v77), var(v78), var(v79)]"]; -edge [style=solid, label="target"]; NodeBranch10 -> NodeBasicBlock11; -} \ No newline at end of file Deleted: /pypy/trunk/doc/nested_whiles.pdf ============================================================================== Files /pypy/trunk/doc/nested_whiles.pdf Fri Oct 31 23:47:54 2003 and (empty file) differ