more tweaks

This commit is contained in:
Lily Brown 2021-08-02 15:23:33 -07:00
parent fae47577f6
commit feeb75b1fe
2 changed files with 19 additions and 19 deletions

Binary file not shown.

View file

@ -28,20 +28,20 @@
\title{Position Paper: Some Goals of the Luau Type System} \title{Position Paper: Some Goals of the Luau Type System}
\author{Lily Brown} %% \author{Lily Brown}
\author{Andy Friesen} %% \author{Andy Friesen}
\author{Alan Jeffrey} %% \author{Alan Jeffrey}
\affiliation{ %% \affiliation{
\institution{Roblox} %% \institution{Roblox}
\city{San Mateo} %% \city{San Mateo}
\state{CA} %% \state{CA}
\country{USA} %% \country{USA}
} %% }
\begin{abstract} \begin{abstract}
Luau is the scripting language that powers user-generated experiences on the Luau is the scripting language that powers user-generated experiences on the
Roblox platform. It is a statically-typed language with type inference based Roblox platform. It is a statically-typed language, based on the
on the dynamically-typed Lua language. These types are used for providing dynamically-typed Lua language, with type inference. These types are used for providing
editor assistance in Roblox Studio, the IDE for authoring Roblox experiences. editor assistance in Roblox Studio, the IDE for authoring Roblox experiences.
Due to Roblox's uniquely heterogeneous developer community, Luau must operate Due to Roblox's uniquely heterogeneous developer community, Luau must operate
in a somewhat different fashion than a traditional statically-typed language. in a somewhat different fashion than a traditional statically-typed language.
@ -56,8 +56,8 @@
The Roblox~\cite{Roblox} platform allows anyone to create shared, The Roblox~\cite{Roblox} platform allows anyone to create shared,
immersive, 3D experiences. As of July 2021, there are immersive, 3D experiences. As of July 2021, there are
approximately 20~million experiences available on Roblox, created approximately 20~million experiences available on Roblox, created
by 8~million developers. Roblox creators are often young. For by 8~million developers. Roblox creators are often young: there are
example, there are over 200~Roblox kids' coding camps in 65~countries over 200~Roblox kids' coding camps in 65~countries
listed by the company as education resources~\cite{AllEducators}. listed by the company as education resources~\cite{AllEducators}.
The Luau programming language~\cite{Luau} is the scripting language The Luau programming language~\cite{Luau} is the scripting language
used by creators of Roblox experiences. Luau is derived from the Lua used by creators of Roblox experiences. Luau is derived from the Lua
@ -74,8 +74,8 @@ these goals differ from traditional type systems' goals.
Quoting a Roblox 2020 report \cite{RobloxDevelopers}: Quoting a Roblox 2020 report \cite{RobloxDevelopers}:
\begin{itemize} \begin{itemize}
\item Adopt Me! now has over 10 billion plays and surpassed 1.6 million concurrent users earlier this year. \item \emph{Adopt Me!} now has over 10 billion plays and surpassed 1.6 million concurrent users earlier this year.
\item Piggy, launched in January 2020, has close to 5 billion visits in just over six months. \item \emph{Piggy}, launched in January 2020, has close to 5 billion visits in just over six months.
\item There are now 345,000 developers on the platform who are monetizing their games. \item There are now 345,000 developers on the platform who are monetizing their games.
\end{itemize} \end{itemize}
This demonstrates the heterogeneity of the Roblox developer community: This demonstrates the heterogeneity of the Roblox developer community:
@ -110,9 +110,9 @@ and multiplayer are all immediately accessible to creators.
\end{figure} \end{figure}
At some point during experience design, the experience creator has a need At some point during experience design, the experience creator has a need
which can't be met by the physics engine alone, such as ``The stairs should that can't be met by the physics engine alone, such as ``the stairs should
light up when a player walks on them'' or ``a firework is set off light up when a player walks on them'' or ``a firework is set off
every few seconds.'' At this point they will discover the script every few seconds.'' At this point, they will discover the script
editor, seen in Fig.~\ref{fig:studio}(b). editor, seen in Fig.~\ref{fig:studio}(b).
This onboarding experience is different from many initial exposures to This onboarding experience is different from many initial exposures to
@ -148,7 +148,7 @@ resulting in an array of techniques for establishing safety results,
surveyed for example in~\cite{TAPL}. Supporting code planning and surveyed for example in~\cite{TAPL}. Supporting code planning and
refactoring are some of the goals of \emph{type-driven refactoring are some of the goals of \emph{type-driven
development}~\cite{TDDIdris} under the slogan ``type, define, development}~\cite{TDDIdris} under the slogan ``type, define,
refine''. For example, a common use of type-driven development is renaming a refine''. A common use of type-driven development is renaming a
property, which is achieved by changing the name in one place, property, which is achieved by changing the name in one place,
and then fixing the resulting type errors---once the type system stops and then fixing the resulting type errors---once the type system stops
reporting errors, the refactoring is complete. reporting errors, the refactoring is complete.
@ -276,7 +276,7 @@ when executed.
On the face of it, this is undecidable, since a program such as On the face of it, this is undecidable, since a program such as
$(\IF f() \THEN \ERROR \END)$ will produce a runtime error when $f()$ is $(\IF f() \THEN \ERROR \END)$ will produce a runtime error when $f()$ is
$\TRUE$, but we can aim for a weaker property, that all flagged code $\TRUE$, but we can aim for a weaker property: that all flagged code
is either dead code or will produce an error. Either of these is a is either dead code or will produce an error. Either of these is a
defect, so deserves flagging, even if the tool does not know defect, so deserves flagging, even if the tool does not know
which reason applies. which reason applies.