mirror of
https://github.com/luau-lang/luau.git
synced 2025-04-10 22:00:54 +01:00
more tweaks
This commit is contained in:
parent
fae47577f6
commit
feeb75b1fe
2 changed files with 19 additions and 19 deletions
Binary file not shown.
|
@ -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.
|
||||||
|
|
Loading…
Add table
Reference in a new issue