diff options
author | Aria Shrimpton <me@aria.rip> | 2024-01-31 14:32:02 +0000 |
---|---|---|
committer | Aria Shrimpton <me@aria.rip> | 2024-01-31 14:32:02 +0000 |
commit | 4f671b73c1d56c677728811babbfa0c21f759db4 (patch) | |
tree | faa8f0501905998815772513a9d4c9c87988851a /thesis/parts | |
parent | 947c712ae85e5300a84661ca74b1e85ad6c828ee (diff) |
more writing
Diffstat (limited to 'thesis/parts')
-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} |