[Cython] Local type inference, first success

Vitja Makarov vitja.makarov at gmail.com
Fri Jul 13 18:55:09 CEST 2012


2012/7/13 Vitja Makarov <vitja.makarov at gmail.com>:
> Hi!
>
> I've been a little bit busy last months, now I'm back.
>
> I made first steps on implementing local type inference, TI for
> assignments not only for their names.
> Here is sample program that works:
>
> (_entry_split) vitja at mchome:~/work/cython-vitek-git/zzz$ cat tf.pyx
> # cython: infer_types.verbose=True
> from cython cimport typeof
>
> def foo(c):
>     a = "abc"
>     print a, typeof(a)
>     if c:
>         a = 123
>     else:
>         a = 1.123
>     print a, typeof(a)
>
> (_entry_split) vitja at mchome:~/work/cython-vitek-git/zzz$ make tf.c
> python ../cython.py  -v tf.pyx -o tf.c
> Compiling /home/vitja/work/cython-vitek-git/zzz/tf.pyx
> Gonna split entries:
> entry: Entry(name=a, type=<unspecified>)
> ... group: set([NameAssignment(entry=Entry(name=a,
> type=<unspecified>)), NameAssignment(entry=Entry(name=a,
> type=<unspecified>))])
> ... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
> 8, 10)
> ... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
> 10, 10)
> ... group: set([NameAssignment(entry=Entry(name=a, type=<unspecified>))])
> ... ... (<FileSourceDescriptor:/home/vitja/work/cython-vitek-git/zzz/tf.pyx>,
> 5, 6)
> note: tf.pyx:5:6: inferred 'a.#1' to be of type 'Python object'
> note: tf.pyx:5:6: inferred 'a.#0' to be of type 'double'
>

Oops, sorry, here is my branch https://github.com/vitek/cython/tree/_entry_split


-- 
vitja.


More information about the cython-devel mailing list