tvl-depot/users/tazjin/presentations/tvix-eval-2023/presentation.tex
Vincent Ambo 0f4eb908ec chore(tazjin/presentations): last minute changes to tvix-eval talk
Change-Id: I788a17f846b35f5635ed7a9ec0d3249b05653d44
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9273
Tested-by: BuildkiteCI
Autosubmit: tazjin <tazjin@tvl.su>
Reviewed-by: tazjin <tazjin@tvl.su>
2023-09-07 12:05:30 +00:00

148 lines
4.5 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[main=russian,english]{babel}
\usepackage{fontspec}
\usepackage{listings}
\setmainfont{JetBrains Mono}
\setsansfont{JetBrains Mono}
\usetheme{metropolis}
\newenvironment{code}{\ttfamily}{\par}
\title{tvix-eval \\ компилятор и рантайм для Nix, на Rust}
\titlegraphic{\vspace{4.8cm}\flushright\includegraphics[width=6cm,keepaspectratio=true]{tvix-logo.png}}
\date{2023-09-07}
\author{Винсент Амбо}
\institute{TVL}
\begin{document}
%% Slide -1 (before counter):
\begin{frame}
\begin{center}
\titlepage
\end{center}
\end{frame}
%% Slide 0 (title):
\begin{frame}
\begin{center}
\titlepage
\end{center}
\end{frame}
%% Slide 1:
\begin{frame}{\textbf{Т}he \textbf{V}irus \textbf{L}ounge}
\begin{itemize}
\item онлайн-комьюнити, занимающееся тулингом для монорепо
\item основной фокус на Nix
\item Nix не только для сборки пакетов
\item Хотелось решение, чтобы использовать Nix везде
\end{itemize}
\end{frame}
%% Slide 2:
\begin{frame}{Особенности языка Nix}
\begin{itemize}
\item Ленивый язык. Вычислять все сразу нельзя.
\item Язык развивался органично.
\item Большинство кода на Nix --- в одном месте: \begin{code}nixpkgs\end{code}
\end{itemize}
\end{frame}
%% Slide 3:
\begin{frame}{Текущая имплементация: C++ Nix}
\lstinputlisting[
language=c++,
basicstyle={\scriptsize}
]{cppnix-example-lexer.cpp}
\end{frame}
%% Slide 4:
\begin{frame}{Текущая имплементация: C++ Nix}
\lstinputlisting[
language=c++,
basicstyle={\scriptsize}
]{cppnix-example-smuggling.cpp}
\end{frame}
%% Slide 5:
\section{``Let's rewrite it in Rust!''}
%% Slide 6:
\section*{Спасибо, jD91mZM2!\\\normalsize{автор ``rnix-parser''; *2002 - \textdagger 2021}}
%% Slide 7:
\begin{frame}{tvix-eval, - (язык) Nix, на Rust}
\begin{itemize}
\item написано с существующим парсером
\item bytecode-интерпретатор, вместо tree-walk
\item должна работать не только для остальных частей tvix
\end{itemize}
\end{frame}
%% Slide 8:
\begin{frame}{tvix-eval, основные части}
\begin{enumerate}
\item собственный байткод и компилятор
\end{enumerate}
\end{frame}
%% показать opcode.rs, быстро показать compiler/mod.rs
%% Slide 9:
\begin{frame}{tvix-eval, основные части}
\begin{enumerate}
\item собственный байткод и компилятор
\item представление значений языка в рантайме
\end{enumerate}
\end{frame}
%% показать Value
%% Slide 10:
\begin{frame}{tvix-eval, основные части}
\begin{enumerate}
\item собственный байткод и компилятор
\item представление значении языка в рантайме
\item ... и сам рантайм!
\end{enumerate}
\end{frame}
%% показать VM
\section{``Подожди, написать рантайм же не так просто?''}
%% объяснить проблему со стеком и решение, показать диаграмму
\section{``А откуда знаешь, что это все правильно работает?''}
%% показать как тесты работают
%% объяснить дебагинг, Твиксболт и тд
%% Slide 10:
\begin{frame}{tvix-eval, в браузере}
\begin{itemize}
\item удивительно легко делать
\item но есть сложности в \begin{code}std::\end{code}
% показать пример
\end{itemize}
\end{frame}
%% Slide 11:
\begin{frame}{А что дальше?}
В tvix-eval есть еще кое-какие интересные проблемы. Может ты их
решишь?
\end{frame}
\begin{frame}{Спасибо!}
\begin{center}
\includegraphics[width=6cm,keepaspectratio=true]{qrcode.png}
https://tazj.in/blog/tvix-eval-talk-2023 \\
t.me/tazjin | t.me/tazlog
\end{center}
\end{frame}
\end{document}