From 4f671b73c1d56c677728811babbfa0c21f759db4 Mon Sep 17 00:00:00 2001 From: Aria Shrimpton Date: Wed, 31 Jan 2024 14:32:02 +0000 Subject: more writing --- thesis/parts/implementation.tex | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'thesis/parts/implementation.tex') 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} -- cgit v1.2.3