aboutsummaryrefslogtreecommitdiff
path: root/thesis/parts
diff options
context:
space:
mode:
authorAria Shrimpton <me@aria.rip>2024-01-31 14:32:02 +0000
committerAria Shrimpton <me@aria.rip>2024-01-31 14:32:02 +0000
commit4f671b73c1d56c677728811babbfa0c21f759db4 (patch)
treefaa8f0501905998815772513a9d4c9c87988851a /thesis/parts
parent947c712ae85e5300a84661ca74b1e85ad6c828ee (diff)
more writing
Diffstat (limited to 'thesis/parts')
-rw-r--r--thesis/parts/implementation.tex17
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}