diff options
-rw-r--r-- | thesis/parts/implementation.tex | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/thesis/parts/implementation.tex b/thesis/parts/implementation.tex index 0482ef7..43ed2ba 100644 --- a/thesis/parts/implementation.tex +++ b/thesis/parts/implementation.tex @@ -2,12 +2,23 @@ \todo{Primrose adaptations} -\section{Cargo integration} +\section{Tooling integration} As well as a standalone compiler, the Rust toolchain provides an official package manager, which is widely adopted. -We interface with cargo through the \code{cargo metadata} command, which allows us to minimise the amount of work req +We interface with cargo through the \code{cargo metadata} command, which allows us to work seamlessly with virtually any Rust project. + +From cargo, we retrieve information about the user's project source directories, the available benchmarks and tests, and the location of the build cache. + +\section{Cost model generation} + +Generation of cost models is implemented in three locations: + +\begin{itemize} +\item The \code{candelabra_benchmarker} crate, which provides code for benchmarking anything that implements the primrose library's traits +\item The \code{candelabra::cost::benchmark} module, which generates, runs, and parses benchmarks for container types in the primrose library +\item The \code{candelabra::cost::fit} module, which fits a linear regression model to a set of observations and allows for +\end{itemize} -\todo{Automatic benchmarking} \todo{Fitting of cost models} \todo{Profiling wrapper} \todo{Selection and comparison code} |