{"size": 1758, "ext": "scrbl", "max_stars_repo_path": "gm-pepm-2018/conclusion.scrbl", "max_stars_repo_name": "nuprl/retic_performance", "max_stars_repo_stars_event_min_datetime": "2018-08-03T02:41:29.000Z", "max_stars_repo_stars_event_max_datetime": "2021-03-19T03:18:47.000Z", "max_issues_repo_path": "gm-pepm-2018/conclusion.scrbl", "max_issues_repo_name": "nuprl/retic_performance", "max_issues_repo_issues_event_min_datetime": "2018-02-04T17:53:56.000Z", "max_issues_repo_issues_event_max_datetime": "2018-11-10T17:06:57.000Z", "max_forks_repo_path": "gm-pepm-2018/conclusion.scrbl", "max_forks_repo_name": "nuprl/retic_performance", "max_forks_repo_forks_event_min_datetime": "2018-08-04T00:14:12.000Z", "max_forks_repo_forks_event_max_datetime": "2018-08-04T00:14:12.000Z"}
{"max_stars_count": 3, "max_issues_count": 3, "max_forks_count": 1, "avg_line_length": 50.2285714286, "max_line_length": 81, "alphanum_fraction": 0.8145620023}
#lang gm-pepm-2018
@title[#:tag "sec:conclusion"]{Is Sound Gradual Typing Alive?}

Our application of the Takikawa method suggests that any combination of
 statically typed and dynamically typed code in Reticulated runs within one
 order of magnitude of the original Python program.
This relatively impressive performance comes at a three-fold cost.
First, soundness is at the level of type-tags rather than full static types.
Second, run-time tag errors do not describe the source of the ill-typed value.
Third, fully-typed programs typically suffer more overhead than any other
 combination of typed and untyped code.

Our evaluation thus raises a number of open research problems.
First among these is whether programmers will find the static guarantees
 of tag soundness useful for maintaining large programs.
In our experience, well-tagged programs often contain subtle mistakes.

A second question is how the cost of soundness compares to the cost of
 expressive types and precise error messages.
Experience by @citet[vss-popl-2017] suggests that the cost of useful error
 messages is high.
They extend Reticulated to track a set of possibly-guilty boundaries
 and find that maintaining the set doubled the @|t/u-ratio| in the majority
 of their benchmark programs.

A third question is whether Reticulated can reduce its overhead relative
 to Python.
Ideally, untyped Reticulated programs should have the same performance as Python.

Finally, we ask whether Reticulated can leverage type information to remove
 run-time checks from Python programs.
The current implementation performs far worse than Typed Racket on fully-typed
 programs because the latter only adds run-time checks at boundaries between
 statically-typed and dynamically-typed code.
