0f4eb908ec
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>
148 lines
4.5 KiB
TeX
148 lines
4.5 KiB
TeX
\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}
|