reticulated
reticulated copied to clipboard
Types for Python
Retic with blame (commit 7adef84) and the current master (5cd2d10) don't insert some casts (`=>`) shown in the paper. Example program: ``` def main(xs:Dyn)->str: return xs[0] main([1]) ``` Since `xs`...
I'd like to run the current Reticulated (https://github.com/mvitousek/reticulated/commit/5cd2d10e0f92505a9db2bc573d8c23360ef6548b) with the transient semantics and with transient+blame (as described in the [POPL 2017 paper](https://doi.org/10.1145/3009837.3009849)). On an older version I could do this...
This ignores the files generated by `python3 setup.py install --user`.
[bm_raytrace.py.zip](https://github.com/mvitousek/reticulated/files/1996708/bm_raytrace.py.zip) The attached benchmark runs in Python3 but gives the following error when running in Reticulated: if result is None or candidateT < result[1]: ^ Cannot index into a value...
I have a small program where MOVING a type annotation adds a dynamic error. First, the untyped program: ``` # 1 def cast(f): return f def identity(x): return x def...
All `for` loops check that the loop variable has the right type. That's good. List comprehensions do not check that the variable they dereference has the right type. Example program:...
Reticulated seems to check return types in two places: 1. at the `return` statement in a function 2. at the call-site to a function Is the first check necessary? -...
If a variable is annotated with a tuple type, Retic does not dynamically check the contents of the tuple at dereferences. A program: ``` def f(x:(Int,Int))->String: return x[0] + x[1]...
It seems that Reticulated skips the init function argument checks in the function body. In the following class definition: ``` @fields({'my_dict': Dict(Int, Tuple(Int, Int))}) class UnionFind: def __init__(self:UnionFind, my_dict:Dict(Int, Tuple(Int,...
Here is a 2-module program: ``` # module 1, "foo.py" import math def f(): return math.undefined_member(0) ``` ``` # module 2, "bar.py" import foo foo.f() ``` Running `$ retic bar.py`...