Hello Joannah,

Ronan might know more about this topic. But here is a short explanation:

A solid start is to read the following documentation:

http://rpython.readthedocs.io/en/latest/translation.html

It explains how Python source code is analyzed, transformed and compiled.

As you know, there are no type annotations as a "static" language
provides (like C++, C, Java, ...).

def foo(a,b):
        return a * b

The two parameters a and b can carry any type (even the ones that are
not able to execute binary add).

One step of the transformation described in the link above "annotates"
the types and deduces other properties.

If you have a call site:

foo("a", 2)

It will deduce that foo's parameter a is an instance of "SomeString" and
b is an instance of "SomeInteger".

So it will assume that when foo is called every call site must provide
SomeString for a and SomeInteger for b (or a subtype, but I'm not aware
of the full details).

If at another place foo(1,2) is called (which is valid python), rpython
must complain, because it cannot be statically compiled.

What we would like is a way to explicitly annotate the types (be aware
that this is just an example, it is up to you how you solve it):

@explicit_types(a=SomeInteger, b=SomeInteger)
def foo(a,b):
        return a * b

This would mean that rpython would complain as soon as it sees foo("a", 2).

Preferably I think it would be good to have a mini language to describe
such function properties, or variable properties.

Cheers,
Richard

On 03/28/2017 10:14 AM, joannah nanjekye wrote:
> Hello,
> 
> I am interested in working on the above project. I need to understand
> what it is about so that I can make a plan for it. I would love to work
> on it for GSoC if accepted.
> 
> In summary..I want to know the goal and the most important stack
> involved working on it.
> 
> I am proficient in python. If the above project idea is not so much in
> that direction you can advise a better idea among the ones listed here
> http://pypy.readthedocs.io/en/latest/project-ideas.html.
> 
> Kind regards,
> 
> -- 
> //Joannah Nanjekye
> +256776468213
> F : Nanjekye Captain Joannah
> S : joannah.nanjekye
> T : @captainjoannah
> SO : joannah
> 
> /"You think you know when you learn, are more sure when you can write,
> even more when you can teach, but certain when you can program."
> Alan J. Perlis/
> 
> 
> _______________________________________________
> pypy-dev mailing list
> pypy-dev@python.org
> https://mail.python.org/mailman/listinfo/pypy-dev
> 
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to