mirror of
https://github.com/luau-lang/luau.git
synced 2025-04-10 22:00:54 +01:00
Tidied up the HATRA paper
This commit is contained in:
parent
baf1e1f4f8
commit
84b838fc6d
2 changed files with 25 additions and 23 deletions
Binary file not shown.
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\title{The Goals of the Luau Type System}
|
\title{Position Paper: Goals of the Luau Type System}
|
||||||
|
|
||||||
\author{Andy Friesen}
|
\author{Andy Friesen}
|
||||||
\author{Alan Jeffrey}
|
\author{Alan Jeffrey}
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
\begin{abstract}
|
\begin{abstract}
|
||||||
A position paper about the goals Luau type system.
|
A position paper about goals of the Luau type system.
|
||||||
\end{abstract}
|
\end{abstract}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
@ -30,8 +30,8 @@
|
||||||
The Roblox~\cite{Roblox} platform allows anyone to create shared,
|
The Roblox~\cite{Roblox} platform allows anyone to create shared,
|
||||||
immersive, 3D experiences. At the time of writing, there are
|
immersive, 3D experiences. At the time of writing, there are
|
||||||
approximately eight million experiences available on Roblox, created
|
approximately eight million experiences available on Roblox, created
|
||||||
by eight million developers. Roblox developers are often young, for
|
by eight million developers. Roblox creators are often young, for
|
||||||
example there are over 200 Roblox coding camps in over 65 countries
|
example there are over 200 Roblox kids' coding camps in over 65 countries
|
||||||
listed at~\cite{AllEducators}.
|
listed at~\cite{AllEducators}.
|
||||||
|
|
||||||
The Luau programming language~\cite{Luau} is the scripting language
|
The Luau programming language~\cite{Luau} is the scripting language
|
||||||
|
@ -39,8 +39,8 @@ used by developers of Roblox experiences. Luau is derived from the Lua
|
||||||
programming language~\cite{Lua}, with additional capabilities,
|
programming language~\cite{Lua}, with additional capabilities,
|
||||||
including a type inference engine.
|
including a type inference engine.
|
||||||
|
|
||||||
This paper will discuss some of the goals of the Luau type system, and
|
This paper will discuss some of the goals of the Luau type system,
|
||||||
why those goals are slightly different from other type systems.
|
focusing on where the goals are different from those of other type systems.
|
||||||
|
|
||||||
\section{Human Aspects}
|
\section{Human Aspects}
|
||||||
\subsection{Heterogenous developer community}
|
\subsection{Heterogenous developer community}
|
||||||
|
@ -52,7 +52,7 @@ Quoting a 2020 report \cite{RobloxDevelopers}:
|
||||||
\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 how heterogenous the Roblox developer community is:
|
This demonstrates how heterogenous the Roblox developer community is:
|
||||||
developers of experiences with plays measured in billions on the same
|
developers of experiences with plays measured in billions are on the same
|
||||||
platform as children first learning to code. Moreover, \emph{both of
|
platform as children first learning to code. Moreover, \emph{both of
|
||||||
these groups are important}, as the professional development studios
|
these groups are important}, as the professional development studios
|
||||||
bring high-quality experiences to the platform, and the beginning creators
|
bring high-quality experiences to the platform, and the beginning creators
|
||||||
|
@ -65,33 +65,33 @@ learners. A learner will download Roblox Studio (the IDE) with an
|
||||||
experience in mind, often designing an obstacle course (an ``obby'')
|
experience in mind, often designing an obstacle course (an ``obby'')
|
||||||
to play in with their friends.
|
to play in with their friends.
|
||||||
|
|
||||||
The user experience of developing a Roblox experience is
|
The user experience of developing a Roblox experience is primarily a
|
||||||
primarily a 3D interactive one, where the user designs and deploys 3D
|
3D interactive one, seen in Fig.~\ref{fig:studio}(a). The user designs
|
||||||
assets such as terrain, parts and joints, and provides them with
|
and deploys 3D assets such as terrain, parts and joints, and provides
|
||||||
physics attributes such as mass and orientation. The user can interact
|
them with physics attributes such as mass and orientation. The user
|
||||||
with the experience in Studio, and deploy it to a Roblox server so anyone with
|
can interact with the experience in Studio, and deploy it to a Roblox
|
||||||
the Roblox app can play it.
|
server so anyone with the Roblox app can play it.
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\includegraphics[width=0.48\textwidth]{studio-mow.png}
|
\includegraphics[width=0.48\textwidth]{studio-mow.png}
|
||||||
\includegraphics[width=0.48\textwidth]{studio-script-editor.png}
|
\includegraphics[width=0.48\textwidth]{studio-script-editor.png}
|
||||||
\caption{Roblox Studio's 3D environment editor, and script editor}
|
\caption{Roblox Studio's 3D environment editor (a), and script editor (b)}
|
||||||
|
\label{fig:studio}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
At some point during experience design, the user of Studio has a need
|
At some point during experience design, the user of Studio has a need
|
||||||
which can't be met by the physics engine alone. ``The stairs should
|
which can't be met by the physics engine alone. ``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, and the Luau programming language.
|
editor, seen in Fig.~\ref{fig:studio}(b), and the Luau programming language.
|
||||||
|
|
||||||
This workflow is different from many initial exposures to programming,
|
This onboarding experience is different from many initial exposures to
|
||||||
in that by the time the user first opens the script editor, they have
|
programming, in that by the time the user first opens the script
|
||||||
already built much of their creation, and have a very specific
|
editor, they have already built much of their creation, and have a
|
||||||
concrete aim.
|
very specific concrete aim. It suggests a Luau goal for helping the
|
||||||
|
majority of creators: \emph{support learning how to perform specific
|
||||||
This workflow suggests a Luau goal for helping the majority of
|
tasks} (for example through autocomplete suggestions and
|
||||||
creators: \emph{support learning how to perform specific tasks} (for
|
documentation).
|
||||||
example through autocomplete suggestions and documentation).
|
|
||||||
|
|
||||||
\subsection{Type-driven development}
|
\subsection{Type-driven development}
|
||||||
|
|
||||||
|
@ -136,6 +136,8 @@ Goal: no false positives
|
||||||
|
|
||||||
- Related to success types?
|
- Related to success types?
|
||||||
|
|
||||||
|
- Problems with mutation and avoiding whole-program analysis.
|
||||||
|
|
||||||
\subsection{Mixing types}
|
\subsection{Mixing types}
|
||||||
|
|
||||||
Goal: support mixed strict/nonstrict development
|
Goal: support mixed strict/nonstrict development
|
||||||
|
|
Loading…
Add table
Reference in a new issue