diff options
26 files changed, 5586 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b0fa730 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.pdf +*.mkv +*.mp4 diff --git a/Fosdem2022/TALK.txt b/Fosdem2022/TALK.txt new file mode 100644 index 0000000..719c001 --- /dev/null +++ b/Fosdem2022/TALK.txt @@ -0,0 +1,201 @@ +Who I am (it's a little bit relevant to understand my previous knowledge) +- telecommunication engineer (EEE equivalent) +- Freelance engineer/programmer at ElenQ.Tech +- Guix user and contributor + +Recently: +- Interested in small computing +- Lisp, specially scheme, specially small scheme implementations + +The early beginnings: +- Started a very small scheme compiler for small machines, and thought + about RISC-V. I decided to target RISC-V assembly (following: + https://compilers.iecc.com/crenshaw/) +- I studied RISC-V via [riscvbook] +- I studied several scheme implementations +- Nothing happened out of this, I gave up when I read about continuations but I + learned some stuff. + +The random events +- One day a friend tells me guix mailing list is looking for help to make a + RISC-V port. I decide to raise my hand. +- Now I'm involved in RISC-V porting effort somehow. +- One day Andy Wingo, the Guile maintainer, mentions it would be interesting + to port Lightening, Guile's JIT code generation library to RISC-V. + +Now I'm working on Lightening: things learned +- Code is data -> I'm a lisp guy, I already knew that! +- Some cool GDB debugging I already forgot (disassemble) +- Now I'm able to hand-assemble instructions too +- Machine code generation is not that complex +- Relocations and large immediates are painful + +Lightening RISC-V is passing all the tests, next step is to give it a serious +try and see if it works! Cross fingers! + +Stage0 +- There was a chance to work on the bootstrap system of Guix via NlNet and the + guys involved in the porting effort helped me prepare a proposal. +- I had to learn about all the steps around so I started with Stage0. + +Stage0's steps: +hex0 -> hex1 -> hex2 -> M0 (macro system) -> M2-Planet [ -> Gnu Mes ] + +Hex0 +- Hex0 are hex files that contain what the ELF executable would, but encoded in + Hexadecimal text. +- I started with hex0, porting it to RISC-V (RV64). Thankfully, I was + developing a RISC-V assembler (I never finished) that helped me generate the + instructions by hand. +- Took the ELF headers from the wikipedia. +- It worked!! + +Effects of this effort +- Other people at Bootstrappable took this work and finished the whole chain + of Stage0! + +A random afternoon: +- I was bored and the Hex0 for RV32 was missing. Looked the headers in the + wikipedia and 20 minutes later it was added to the project. Another starting + point solved! + +Now: +- Took the NlNet grant and now I'm going to contribute to the full source + bootstrap ecosystem. So now this is kind of my job. + +Conclusions: +- This is just random work +- Embrace the randomness of life, stay curious and you may reach interesting + places. + + + +--- + + +My blogposts about this process: +https://ekaitz.elenq.tech/lightening.html +https://ekaitz.elenq.tech/hex0.html +https://ekaitz.elenq.tech/machine-code-generation.html + +RISC-V: +http://riscvbook.com/ + +Bootstrap related: +http://bootstrappable.org +https://github.com/oriansj/stage0 +https://github.com/oriansj/bootstrap-seeds + +GUILE +https://www.gnu.org/software/guile/ +https://gitlab.com/wingo/lightening/-/merge_requests/14/commits + +--- + +We are excited to announce a devroom on Declarative and Minimalistic +Computing at FOSDEM on 5th and 6th of February, 2022, online! + +FOSDEM is one of the most important free software conferences and is +hosted annually at Université libre de Bruxelles in Brussels, +Belgium. Unfortunately again this year FOSDEM will not run a physical +conference but will be online only. Talks will be pre-recorded with +some live content including Q&A sessions and discussion panels. + +We accept talks from languages that attempt to minimize use of hardware +and software while trying to make systems simpler, more robust and more +secure. If you are working on improving today's systems taking +declarative/minimalistic approaches feel free to submit a talk +proposal. Examples include the Scheme/Lisp family of programmings +languages. In past editions, this devroom has received presentations +from a varied number of language communities, including Forth, Guile, +Lua, Nim, Racket, Raku and Tcl as well as several experimental projects +that push minimalism in new directions. + +Minimalism and declarative programming are two important topics for +this devroom. Minimalism matters. Minimalism allows for smaller +systems that take less resources and consume less energy. More +importantly, free and open source minimalism allows for secure systems +that are easy to understand. Declarative programming is a programming +paradigm that expresses the logic of a computation without describing +its control flow. Many languages that apply this style attempt to +minimize or eliminate side effects by describing what the program must +accomplish in terms of the problem domain, rather than describe how to +accomplish it as a sequence of the programming language primitives. + +Finally, in this year's virtual conference we will honor the late Professor +[https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist) John +McCarthy] as the founder of AI and the inventor of LISP. McCarthy with +his work pioneered artificial intelligence, developed the Lisp +programming language family and kickstarted our modern computing world. + +We want to invite you to submit a talk on declarative and minimalistic +computing that fits that description. We are especially happy to +receive talk submissions from members of groups underrepresented in +free software. + +If you have something you’d like to share with your fellow developers, +please E-mail us! Talks considered for the devroom will have to +be entered in + + - https://penta.fosdem.org/submission/FOSDEM22 + +The deadline for submission is December 20th. If you have a FOSDEM +pentabarf account from a previous year, please use that +account. Otherwise add one on +https://penta.fosdem.org/user/new_account. Reach out to +pjotr.public456@thebird.nl or manolis837@gmail.com if you run into any +trouble. + +When submitting your talk make doubly sure to select "Declarative and +Minimalistic Computing devroom" as track (if you don't we won't find +it), and include the following information: + + * The title and subtitle of your talk + * A short abstract of one paragraph + * A longer description if you wish to do so + * Links to related websites/blogs etc + * Presentations has to be pre-recorded and streamed before the event. + * Start recording early! + +To see what a final talk looks like see + + https://archive.fosdem.org/2021/schedule/event/gnumes/ + +For accepted talks + + * Once your talk was accepted, we will assign you an organizer to +help you to produce the pre-recorded content. + * The organizer will review the content and ensure it has the +required quality. He is also responsible for ensuring the content is +into the system and ready to broadcast. + * During the stream of your talk, you must be available online for +the Q/A session + +Let's make this a fun day! + += Organizers = + +Pjotr Prins, Manolis Ragkousis, Ludovic Courtès, Amirouche Boubekki, +Hisham Muhammad, Jan Nieuwenhuizen, Ricardo Wurmus, Alex +Sassmannshausen, William Byrd, Oliver Propst, Efraim Flashner, Julien +Lepiller + += Code of conduct = + + - https://fosdem.org/2022/practical/conduct/ + += Original proposal = + + - https://libreplanet.org/wiki/FOSDEM2022-devroom-proposal + += Important dates: = + + - Dec 20th 2021: submission deadline for talk proposals + - Dec 31th 2021: announcement of the final schedule + - Jan 14th 2021: submission deadline for recordings + - Feb 5th 2022: FOSDEM! + += Links: = + + - +https://libreplanet.org/wiki/FOSDEM2022-devroom-declarative-and-minimalistic-computing-cfp diff --git a/Fosdem2022/contents.md b/Fosdem2022/contents.md new file mode 100644 index 0000000..e8533b8 --- /dev/null +++ b/Fosdem2022/contents.md @@ -0,0 +1,244 @@ +--- +title: "A year of RISC-V adventures: embracing chaos in your software journey" + +subtitle: How I started from zero and ended up porting a JIT compilation library and assembling files by hand + +license: CC-BY-SA +author: Ekaitz Zárraga +links-as-notes: true +lang: spanish +polyglossia-lang: + name: english +how-to: pandoc -f markdown+smart -t beamer contents.md -o beamer.pdf --pdf-engine=xelatex --template=template.tex +... + +# Who I am +- Telecommunication engineer (EEE equivalent) +- Freelance engineer/programmer at [ElenQ.Tech](https://elenq.tech) +- Guix user and contributor + +## Recently +- Interested in small computing +- Lisp, specially Scheme, more specifically small Scheme implementations. + + + +# The beginnings +- Started a very small scheme compiler for small machines, and thought about + RISC-V. I decided to target RISC-V assembly following ["Let's Build a + Compiler" by Jack Crenshaw](https://compilers.iecc.com/crenshaw/) +- I studied RISC-V with: ["The RISC-V Reader: An Open Architecture + Atlas"](http://riscvbook.com/) +- I studied several scheme implementations and read some papers +- Nothing happened out of this, I gave up when I read about continuations but I + learned some stuff. + + + +# Chaos starts +- One day a friend (the same guy who introduced me to Guix) tells me the Guix + mailing list is looking for help to make a RISC-V port. I decide to raise my + hand. +- Now I'm involved in RISC-V porting effort somehow. +- One day Andy Wingo, the Guile maintainer, mentions it would be interesting to + port Lightening, Guile's JIT code generation library to RISC-V. + + + +# Now I'm working on the Lightening port somehow + +Lightening is a machine code generation library. It's a fork of GNU Lightning, +made for Guile, that aims to be simple. + +## The experience +- My C programming skills are rusty +- 0 documentation: only the one inherited from GNU Lightning +- Dead code +- Andy Wingo helped me take the good direction and made everything easier + +# Lightening: Things learned +- How to assemble instructions by hand * +- Code is data. I'm a lisp guy, I already knew that! * +- Some cool GDB debugging tricks I already forgot +- Machine code generation is not that complex +- Relocations and immediates are painful[^more] + +[^more]: Read more: <https://ekaitz.elenq.tech/machine-code-generation.html> + +# Lightening: Assemble by hand + +``` +addi a0, zero, 56 +``` + +- Opcode `addi`: `0010011` +- Destination register `a0`: `01010` +- `funct3`: `000` +- Source register `zero`: `00000` +- The immediate `56`: `000000111000` + +`000000111000 | 00000 | 000 | 01010 | 0010011` + +All together: `00000011100000000000010100010011` +(In hex: `0x3800513`) + + +# Lightening: Code is data + +``` c +#include<stdint.h> +#include<stdio.h> + +typedef int f0(void); + +int main(int argc, char* argv[]){ + uint32_t instructions[2]; + + instructions[0] = 0x03800513; // addi a0, zero, 56 + instructions[1] = 0x00008067; // jalr zero, ra, 0 + + // Reinterpret the array address as a function + f0 *load_56 = (f0*) instructions; + + int a = load_56(); + printf("%d\n", a); +} +``` + + +# Moving to the bootstrap system + +There was a chance to work on Guix's RISC-V support via NlNet and the +guys involved in the porting effort told me I should send a proposal. + +I had to learn about the full-source bootstrap project for this so I ended up +taking part on it. + +The proposal was rejected, but the learning was already done. *And what now?* + +# Stage0 + +Stage0 is a full source bootstrap system. + +Stage0's steps: + +1. Hex0: Hex encoded raw ELF file with comments +2. Hex1: Hex0 + one character labels and some extras +3. Hex2: Hex1 + proper labels and reasonable basics +4. M0 (macro system): A simple macro system +5. M2-Planet: A C subset that uses M0 as output +6. C compilers (i.e. GNU Mes's `mescc`) + + +# Stage0 + +## The experience + +![](img/better_documentation.png) + +# Hex0 + +Hex0 is a simple assembler written in Hex0. It just converts a Hexadecimal +encoded ELF file to binary. + +It's heavily commented so anyone can decode the instructions and make sure that +it works as expected. It looks like this: + +``` +# :_start ; (0x0600078) + +; Open input file and store FD in s2 +93 08 80 03 # RD_A7 !56 ADDI ; sys_openat +13 05 C0 F9 # RD_A0 !-100 ADDI ; AT_FDCWD +93 05 06 00 # RD_A1 RS1_A2 MV ; input file +13 06 00 00 # RD_A2 MV ; read only +73 00 00 00 # ECALL +13 09 05 00 # RD_S2 RS1_A0 MV ; Save fd + +``` + +# Hex0 + +I wanted to make the first version of the POSIX based Hex0 for RV64. I just +needed to: + +1. Write it in assembly first +2. Assemble everything by hand... + +![](img/drake.jpg) + + + +# Hex0: Abandoned projects that add entropy: pysc-v + +While I was working on Lightening I started a RISC-V assembler in Python. + +*[I abandoned the project](http://git.elenq.tech/pysc-v/)* + +But the backend was reusable so I could generate all the instructions in the +Hex0 with the format I wanted! + + +# Hex0: disassembly tricks + +I still need to calculate addresses by hand though. + +*But wait!* I learned how to disassemble when I worked on Lightening so I could +obtain each instructions address easily, without all the counting. + +# Hex0 + +## The experience + +- It was rewarding to see that I could write assembly. +- I reused all the GDB tricks from Lightening to check that everything was + working correctly. +- The documentation is weird and there are too many subprojects that make the + project hard to understand for newcomers. It's hard to understand the reasons + behind some decisions and everything looks fragile. +- But `#bootstrappable` at `libera.chat` is a good place to ask questions and + learn from others. + + +# Hex0 extra: embrace boredom + +Sunday morning. I'm bored. + +I reviewed the status of the project and saw RV32 is not ready yet, even if it +is similar to RV64. + +I start a discussion on IRC and in less than half an hour and with the help of +the Wikipedia we replace the ELF headers and make the Hex0 support for RV32. + + +# Status of the projects +- **Lightening**: is passing all the test but needs testing. [The + code][lightening] is available for anyone to read and improve. +- **Stage0**: included [my small RISC-V contribution to Hex0][stage0] and other + contributors expanded my work to every stage. + +[lightening]: https://gitlab.com/wingo/lightening/-/merge_requests/14/commits +[stage0]: https://github.com/oriansj/bootstrap-seeds/pull/2 + + + +# My status + +I tried again with NlNet, with a proposal for some RISC-V porting efforts on +GNU Mes and other bootstrap related projects. + +They look interested on a full-source-bootstrap for RISC-V! + +*I might end up working on a compiler* + + +# Conclusions +- All this is just random work, done without a plan or purpose +- Embrace the chaos of life, stay curious and you may reach interesting places +- If you can, learn from people: it's faster and better +- You don't need to be a genius: most of the things are easy once you know the + context. + +--- + +## Just try, and let it happen diff --git a/Fosdem2022/img/better_documentation.png b/Fosdem2022/img/better_documentation.png Binary files differnew file mode 100644 index 0000000..b8348dc --- /dev/null +++ b/Fosdem2022/img/better_documentation.png diff --git a/Fosdem2022/img/drake.jpg b/Fosdem2022/img/drake.jpg Binary files differnew file mode 100644 index 0000000..10a1e74 --- /dev/null +++ b/Fosdem2022/img/drake.jpg diff --git a/Fosdem2022/template.tex b/Fosdem2022/template.tex new file mode 100644 index 0000000..31b2bf7 --- /dev/null +++ b/Fosdem2022/template.tex @@ -0,0 +1,236 @@ +\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\selectcolormodel{gray} % Color B&W +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ + +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{fixltx2e} % provides \textsubscript + + +\usefonttheme{professionalfonts} % using non standard fonts for beamer +\usefonttheme{serif} % default family is serif + +% Font +\usepackage{fontspec} +\setmainfont[ + BoldFont = Lato-Bold.ttf, + ItalicFont = Lato-Italic.ttf, + BoldItalicFont = Lato-BoldItalic.ttf +]{Lato-Regular.ttf} +\newcommand{\euro}{€} + +% Images with no captions +\usepackage{caption} +\captionsetup[figure]{labelformat=empty} + +% Bullet style +\useinnertheme{circles} +\newlength{\wideitemsep} +\setlength{\wideitemsep}{\itemsep} +\addtolength{\wideitemsep}{5pt} +\let\olditem\item +\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem} + +$if(euro)$ + \newcommand{\euro}{€} +$endif$ + +% Language +\usepackage{polyglossia} +\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} + +\newif\ifbibliography +$if(natbib)$ +\usepackage{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ + +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ + +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, + citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, +$else$ + pdfborder={0 0 0}, +$endif$ + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +$if(verbatim-in-note)$ +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(listings)$ +\usepackage{listings} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +\usepackage{caption} +% These lines are needed to make table captions work with longtable: +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +$endif$ + +% Prevent slide breaks in the middle of a paragraph: +\widowpenalties 1 10000 +\raggedbottom + +$if(section-titles)$ +\AtBeginPart{ + \let\insertpartnumber\relax + \let\partname\relax + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \let\insertsectionnumber\relax + \let\sectionname\relax + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \let\insertsubsectionnumber\relax + \let\subsectionname\relax + \frame{\subsectionpage} +} +$endif$ + +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\renewcommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ + +$if(strikeout)$ +\usepackage[normalem]{ulem} +% avoid problems with \sout in headers with hyperref: +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{0} +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + $if(latex-dir-rtl)$ + \usepackage[RTLdocument]{bidi} + $else$ + \usepackage{bidi} + $endif$ +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ + +$if(title)$ +\title{$title$} +$endif$ +$if(subtitle)$ +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +\date{$date$} + +\begin{document} +$if(title)$ +\frame{\titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +\begin{frame} +\tableofcontents[hideallsubsections] +\end{frame} + +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +\end{frame} + +$endif$ +$endif$ +$if(biblatex)$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\printbibliography[heading=none] +\end{frame} + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} diff --git a/Fosdem2023/Makefile b/Fosdem2023/Makefile new file mode 100644 index 0000000..1f2daf1 --- /dev/null +++ b/Fosdem2023/Makefile @@ -0,0 +1,25 @@ +TARGET = presentation.pdf + +TEMPLATE = template.tex +CONTENT = contents.md + +# IMG_DIR = img +# IMG_SRCS = $(wildcard $(IMG_DIR)/*.svg) +# IMG_BASENAME = $(notdir $(basename $(IMG_SRCS))) +# TMP_IMG_DIR = tmp +# IMGS = $(addsuffix .png, $(addprefix $(TMP_IMG_DIR)/, $(IMG_BASENAME))) + +all: $(TARGET) + +$(TARGET): $(CONTENT) $(TEMPLATE) # $(IMGS) + pandoc -f markdown+smart -t beamer $(CONTENT) -o $(TARGET) --pdf-engine=xelatex --template=$(TEMPLATE) + +# $(IMGS): $(TMP_IMG_DIR)/%.png: $(IMG_DIR)/%.svg +# mkdir -p $(TMP_IMG_DIR) +# inkscape $< --export-filename $@ --export-type=png --export-background-opacity=0.0 + +clean: + rm -r $(TARGET) # $(TMP_IMG_DIR) + +.PHONY: all clean $(CONTENT) $(TEMPLATE) + diff --git a/Fosdem2023/contents.md b/Fosdem2023/contents.md new file mode 100644 index 0000000..924371c --- /dev/null +++ b/Fosdem2023/contents.md @@ -0,0 +1,488 @@ +--- +title: "Bringing RISC-V to Guix's bootstrap" + +subtitle: What's done and what we need to do + +license: CC-BY-SA +author: Ekaitz Zárraga +links-as-notes: true +lang: spanish +polyglossia-lang: + name: english +how-to: pandoc -f markdown+smart -t beamer contents.md -o beamer.pdf --pdf-engine=xelatex --template=template.tex +header-includes: + - \usepackage{multicol} + - \newcommand{\hideFromPandoc}[1]{#1} + - \hideFromPandoc{ + \let\Begin\begin + \let\End\end + } +... + +## Who I am +- Telecommunication engineer (EEE equivalent) +- Freelance engineer/programmer at [ElenQ.Tech](https://elenq.tech) +- Guix user and contributor +- You might remember me from my talk last year: + *"A year of RISC-V adventures: embracing chaos in your software journey"* + + +## Intro + +- Last year I asked [NlNet for a grant][nlnet-grant]. +- I wanted to push the bootstrapping effort for RISC-V, and they funded me to + do so. +- In this talk I'm going to introduce what I did[^1], what I think it's more or + less done and what's missing. + +[nlnet-grant]: https://nlnet.nl/project/GNUMes-RISCV/index.html + +[^1]: Read the longer version here: <https://ekaitz.elenq.tech/tag/bootstrapping-gcc-in-risc-v.html> + +# Intro to bootstrapping + +## Free software is not enough + +We love Free Software because it helps us audit our programs. + +![ ](img/Source-Binary.svg){width=200px} + +But do we know if the source code we read actually maps to the binary we are +executing? **Not really** + +## Reproducibility + +![The relation is one-way: the compiler is in the middle](img/Source-Binary-Compiler.svg){width=200px} + +In Guix we have **reproducibility**, so we can make sure some inputs (the +source, the compiler and the environment where it runs) always produce the same +outputs. + +**We can challenge the binaries**, so nobody will give us a malicious binary. + +## Trusting trust + +![But what if the bad actor is not a person but a program?](img/Sneaky-Compiler.svg){width=200px} + +## Trusting trust + +![But what if the bad actor is not a person but a program?](img/Sneaky-Compiler.svg){width=160px} + +Reproducibility here will only make sure we generate the same **corrupt** +binary. + +> This kind of attack [can be done in real life][ken-trust]. + +[ken-trust]: https://niconiconi.neocities.org/posts/ken-thompson-really-did-launch-his-trusting-trust-trojan-attack-in-real-life/ + +## Recursive problem, recursive solution + +The compiler is a program too. **This issue is recursive**: a corrupt compiler +could corrupt it's output compiler! + +![What's the exit point?](img/Bootstrapping.svg){width=300px} + +## Recursive problem, recursive solution + +![What's the exit point?](img/Bootstrapping.svg){width=200px} + +If we could have a compiler that we can make sure its output is not corrupt +(**but how?**), we could make sure all the chain is correct. + +## In practice + +GNU+Linux distributions often rely in many prebuilt binaries: Bash, GCC, +Coreutils, Python... + +Some distributions like Guix are interested on reducing the amount of binaries +they have to trust. + +We can compile most of **The World** from source using a powerful compiler (GCC +FTW). But we can't use a pre-built compiler (remember the previous slides?) + +**The key**: Who is compiling the compiler? + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) +2. GCC 11 (requires ISO C++98 compiler) + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) +2. GCC 11 (requires ISO C++98 compiler) +3. GCC 4.8 (requires ISO C89 compiler) + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) +2. GCC 11 (requires ISO C++98 compiler) +3. GCC 4.8 (requires ISO C89 compiler) +4. GCC 3.4 (requires K&R compiler) + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) +2. GCC 11 (requires ISO C++98 compiler) +3. GCC 4.8 (requires ISO C89 compiler) +4. GCC 3.4 (requires K&R compiler) +5. ... + +## In practice - II + +Let's try with GCC: + +0. The World (requires a modern GCC) +1. Modern GCC (requires ISO C++11 compiler) +2. GCC 11 (requires ISO C++98 compiler) +3. GCC 4.8 (requires ISO C89 compiler) +4. GCC 3.4 (requires K&R compiler) +5. ... + +*I didn't mention libraries here, that's also a lot of fun* + +## Guix's bootstrapping + +0. The World +1. Modern GCC +2. GCC 7.5 +3. GCC 4.6.4 +4. GCC 2.95 +5. TinyCC + - Bootstrappable TinyCC +6. GNU Mes +7. Stage0-POSIX => **SOURCE CODE** + +## GNU Mes + +> GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU +> System. Since version 0.22 it has again helped to halve the size of opaque, +> uninspectable binary seeds that are currently being used in the Further +> Reduced Binary Seed bootstrap of GNU Guix. **The final goal is to help create +> a full-source bootstrap as part of the bootstrappable builds effort for +> UNIX-like operating systems**. + +> The Scheme interpreter is written in ~5,000 LOC of simple C, and the C +> compiler written in Scheme and these are mutual self-hosting. Mes can now be +> bootstrapped from M2-Planet and Mescc-Tools. + +<https://www.gnu.org/software/mes/> + + +## Stage0-POSIX + +> It bootstraps all these from a single 256 byte seed (which you will find in +> the folder bootstrap-seeds). **The ultimate goal is for this to bootstrap all +> the way up to GCC**. + +> There is only one "missing" part that is not bootstrappable from the hex0 +> seed: a kernel. This issue is not yet solved and at the moment the kernel is +> trusted. + +<https://github.com/oriansj/stage0-posix> + + +## Boostrapping - wrapping up + +![ ](img/meme.jpg) + + +# RISC-V support + +## Guix's bootstrapping - RISC-V support + +\Begin{multicols}{2} + +0. The World +1. Modern GCC +2. GCC 7.5 +3. GCC 4.6.4 +4. GCC 2.95 +5. TinyCC + - Bootstrappable TinyCC +6. GNU Mes +7. Stage0-POSIX + +\columnbreak + +- N/A +- YES +- YES +- NO +- NO +- YES + - NO +- PARTIAL +- YES + +\End{multicols} + + +## Guix's bootstrapping - RISC-V support *SPOILER* + +\Begin{multicols}{2} + +0. The World +1. Modern GCC +2. GCC 7.5 +3. GCC 4.6.4 +4. GCC 2.95 +5. TinyCC + - Bootstrappable TinyCC +6. GNU Mes +7. Stage0-POSIX + +\columnbreak + +- N/A +- YES +- YES +- ~~NO~~ *I backported this* +- ~~NO~~ *We will remove it* +- YES + - ~~NO~~ *I backported this* +- PARTIAL +- YES *I made some of this* + +\End{multicols} + +# What I did + +## GCC + +GCC uses a Davidson-Fraser model. Meaning that it uses an intermediate language +that is machine dependant: RTL (Register Transfer Language). + +``` +HLL -> GIMPLE -> RTL -> OPTIMIZATIONS -> RTL -> ASSEMBLY +``` + +GCC is only a coordinator: it calls `as` and `ld` from binutils as the +assembler and linker. + +- `GIMPLE -> RTL`: is done using identifiers. The GIMPLE nodes match insn + identifiers. + +- `RTL -> OPTIMIZATIONS`: RTL matches the RTL templates we write in the + backend part of GCC. Those can be expanded to other RTL expressions. + +- `RTL -> ASSEMBLY`: The expanded RTL expressions are matched against RTL + templates that also describe their equivalent in assembly and assembly is + generated from them. + +## GCC + +RTL templates are written in LISP in machine descriptor files (`*.md`), they +look like this: + +\small +``` lisp +(define_insn + "adddi3" ;; Identifier + + ;; The behavior of the instruction + [(set (match_operand:DI 0 "register_operand" "=r,r") + (plus:DI (match_operand:DI 1 "register_operand" "r,r") + (match_operand:DI 2 "arith_operand" "r,I"))) + ] + + "TARGET_64BIT" ;; Predicate to test + "add\t%0,%1,%2" ;; Assembly output template + + ;; Attributes + [(set_attr "type" "arith") + (set_attr "mode" "DI")]) +``` +\normalsize + +## GCC + +Apart from that GCC needs tons of other definitions in order to get another +target: + +- Target description macros and functions +- Libraries like libgcc and many others + +## GCC - What I did + +Cherry picked the RISC-V support from GCC 7.5 to GCC 4.6.4 + +1. There were missing insns => Used older ones that were equivalent. +2. Some RTL constructs (`int_iterator`) didn't exist in 4.6.4 => Expanded the + iterator by hand. +3. There were missing predicates => Copied them. +4. The internal GCC API moved from C to C++ in the meantime => I had to convert + the code from using a class to the older interface. +5. Memory barriers didn't exist back then => Always introduce a `fence` to make + sure code is correct. +6. `libgcc` is a mess => Play around until it works + +**TL;DR**: Touch everything until it works. + +## GCC - What I did + +Finally I managed to make a GCC 4.6.4 that is able to generate RISC-V binary. + +See the blog for a more detailed description of the changes: + +- <https://ekaitz.elenq.tech/bootstrapGcc3.html> +- <https://ekaitz.elenq.tech/bootstrapGcc4.html> + + +## Bootstrappable TinyCC + +TinyCC has RISC-V support but it's not boostrappable using GNU Mes. + +The bootstrappable fork of TinyCC GNU Mes uses is old => Backport again. + +## Bootstrappable TinyCC - What I did + +Copy the relevant files from the upstream TinyCC and: + +0. Prepare a reproducible way to build the Bootstrappable TinyCC. +1. Just read the code and make it match. + **SURPRISE**: The code is really hard to read... But I eventually managed to + make it work. +2. Some core code was needed for the backend to work => Remove it! It was only + some optimization code! + +More detailed description of the changes: + +- <https://ekaitz.elenq.tech/bootstrapGcc6.html> + +## Bootstrappable TinyCC - What I did + +\tiny +\Begin{multicols}{2} + +**OPTIMIZED VERSION** +``` +0000000000000000 <main>: + 0: fd010113 addi sp,sp,-48 + 4: 02113423 sd ra,40(sp) + 8: 02813023 sd s0,32(sp) + c: 03010413 addi s0,sp,48 + 10: 00000013 nop + 14: fea43423 sd a0,-24(s0) + 18: feb43023 sd a1,-32(s0) + 1c: 0130051b addiw a0,zero,19 + 20: fca42e23 sw a0,-36(s0) + 24: 05a0051b addiw a0,zero,90 + 28: fca42c23 sw a0,-40(s0) + 2c: fdc42503 lw a0,-36(s0) + 30: 00051463 bnez a0,38 <main+0x38> + 34: 0180006f j 4c <main+0x4c> + 38: fd842503 lw a0,-40(s0) + 3c: 00051463 bnez a0,44 <main+0x44> + 40: 00c0006f j 4c <main+0x4c> + 44: 0010051b addiw a0,zero,1 + 48: 0100006f j 58 <main+0x58> + 4c: 00008537 lui a0,0x8 + 50: 7005051b addiw a0,a0,1792 + 54: 00000033 add zero,zero,zero + 58: 02813083 ld ra,40(sp) + 5c: 02013403 ld s0,32(sp) + 60: 03010113 addi sp,sp,48 + 64: 00008067 ret +``` +\columnbreak +**UNOPTIMIZED VERSION** +``` +0000000000000000 <main>: + 0: fd010113 addi sp,sp,-48 + 4: 02113423 sd ra,40(sp) + 8: 02813023 sd s0,32(sp) + c: 03010413 addi s0,sp,48 + 10: 00000013 nop + 14: fea43423 sd a0,-24(s0) + 18: feb43023 sd a1,-32(s0) + 1c: 0130051b addiw a0,zero,19 + 20: fca42e23 sw a0,-36(s0) + 24: 05a0051b addiw a0,zero,90 + 28: fca42c23 sw a0,-40(s0) + 2c: fdc42503 lw a0,-36(s0) + 30: 00051463 bnez a0,38 <main+0x38> + 34: 01c0006f j 50 <main+0x50> + 38: fd842503 lw a0,-40(s0) + 3c: 00051463 bnez a0,44 <main+0x44> + 40: 0100006f j 50 <main+0x50> + 44: 0010051b addiw a0,zero,1 + 48: 0140006f j 5c <main+0x5c> + 4c: 0100006f j 5c <main+0x5c> + 50: 00008537 lui a0,0x8 + 54: 7005051b addiw a0,a0,1792 + 58: 00000033 add zero,zero,zero + 5c: 02813083 ld ra,40(sp) + 60: 02013403 ld s0,32(sp) + 64: 03010113 addi sp,sp,48 + 68: 00008067 ret +``` +\End{multicols} + +\normalsize + +# What needs to be done + +## GCC - What needs to be done + +- Properly package the GCC-4.6.4 to include C++ support, and fix all the + libraries that might be missing. +- Build the backported GCC-4.6.4 using TinyCC +- Build GCC-7.5 using the backported GCC-4.6.4 + +## TinyCC - What needs to be done + +- Build the bootstrappable TinyCC using GNU Mes +- Decide if we need the upstream TinyCC to build GCC or not + - If we do: build the upstream TinyCC with the bootstrappable TinyCC + +## GNU Mes - What needs to be done + +- Review the current RISC-V support and prepare it to be merged + +## Guix - What needs to be done + +- Describe the whole compiler compiler chain in the bootstrapping packages so + everyone can benefit from it + +## Extra + +Do it all in real hardware + +# Last words + +## Last words + +There's still a lot of work to be done, most of it being the integration of the +work I already did in the past thanks to NlNet. + +The future is bright though. We are probably going to get more funds from NlNet +to involve more people on this. + +Wanna join? + +## Contact and take part + +- Email me: <ekaitz@elenq.tech> +- Relevant IRC channels: `#bootstrappable`, `#guix`, `#guix-risc-v` + +# Thank you diff --git a/Fosdem2023/img/BASE.svg b/Fosdem2023/img/BASE.svg new file mode 100644 index 0000000..facfa8e --- /dev/null +++ b/Fosdem2023/img/BASE.svg @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="210mm" + height="148mm" + viewBox="0 0 793.70081 559.37006" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="BASE.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + showguides="false" + inkscape:zoom="1.9303915" + inkscape:cx="354.07325" + inkscape:cy="144.53027" + inkscape:window-width="1916" + inkscape:window-height="1036" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="1" + inkscape:current-layer="layer1"> + <inkscape:grid + type="xygrid" + id="grid366" + spacingx="5" + spacingy="5" /> + </sodipodi:namedview> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="TriangleStart" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368" + width="135" + height="50" + x="130" + y="115" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect370" + width="140" + height="50" + x="385" + y="115" /> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="236.01859" + y="149.78835" + id="text471"><tspan + sodipodi:role="line" + id="tspan469" + x="236.01859" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Source</tspan><tspan + sodipodi:role="line" + x="236.01859" + y="199.78835" + id="tspan473" /></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="496.01859" + y="149.78835" + id="text471-6"><tspan + sodipodi:role="line" + id="tspan469-0" + x="496.01859" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Binary</tspan><tspan + sodipodi:role="line" + x="496.01859" + y="199.78835" + id="tspan473-6" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:3.77952758;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleStart);stroke-dasharray:none" + d="M 265,140 H 385" + id="path611" /> + </g> +</svg> diff --git a/Fosdem2023/img/Bootstrapping.svg b/Fosdem2023/img/Bootstrapping.svg new file mode 100644 index 0000000..6f61055 --- /dev/null +++ b/Fosdem2023/img/Bootstrapping.svg @@ -0,0 +1,378 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="145.94458mm" + height="73.31604mm" + viewBox="0 0 551.60158 277.09998" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Bootstrapping.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + showguides="false" + inkscape:zoom="1.6060415" + inkscape:cx="228.82348" + inkscape:cy="162.51137" + inkscape:window-width="1916" + inkscape:window-height="1036" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="1" + inkscape:current-layer="layer1"> + <inkscape:grid + type="xygrid" + id="grid366" + spacingx="5" + spacingy="5" + originx="-291.39844" + originy="-202.39551" /> + </sodipodi:namedview> + <defs + id="defs2"> + <linearGradient + inkscape:collect="always" + id="linearGradient1067"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop1063" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop1065" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1035"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop1031" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop1033" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient1003"> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop999" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop1001" /> + </linearGradient> + <marker + style="overflow:visible" + id="marker8990" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988" /> + </marker> + <rect + x="285.34802" + y="81.876205" + width="72.577995" + height="46.49157" + id="rect4504" /> + <marker + style="overflow:visible" + id="TriangleStart" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135" /> + </marker> + <marker + style="overflow:visible" + id="TriangleStart-2" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135-3" /> + </marker> + <marker + style="overflow:visible" + id="marker8990-7" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988-5" /> + </marker> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1003" + id="linearGradient1005" + x1="220.24939" + y1="246.47063" + x2="297.8335" + y2="246.47063" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1035" + id="linearGradient1037" + x1="335.71463" + y1="354.63511" + x2="439.45118" + y2="354.63511" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1067" + id="linearGradient1069" + x1="433.16601" + y1="364.42624" + x2="448.62421" + y2="364.42624" + gradientUnits="userSpaceOnUse" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-163.28819,-113.11023)"> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368" + width="135" + height="50" + x="318" + y="115" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect370" + width="140" + height="50" + x="573" + y="115" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="425.31064" + y="149.78835" + id="text471"><tspan + sodipodi:role="line" + id="tspan469" + x="425.31064" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Source</tspan><tspan + sodipodi:role="line" + x="425.31064" + y="199.78835" + id="tspan473" /></text> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368-7" + width="135" + height="50" + x="446.54141" + y="221.16039" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="566.10809" + y="255.94873" + id="text471-9"><tspan + sodipodi:role="line" + id="tspan469-2" + x="566.10809" + y="255.94873" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Compiler</tspan><tspan + sodipodi:role="line" + x="566.10809" + y="305.94873" + id="tspan473-0" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="679.07361" + y="149.92062" + id="text471-6"><tspan + sodipodi:role="line" + id="tspan469-0" + x="679.07361" + y="149.92062" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Binary</tspan><tspan + sodipodi:role="line" + x="679.07361" + y="199.92062" + id="tspan473-6" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart)" + d="M 453,140 H 573" + id="path611" /> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990)" + d="M 514.04141,221.16038 513,140" + id="path8986" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#808080;stroke-width:3.77953;stroke-linecap:square;stroke-opacity:1" + id="rect368-9" + width="135" + height="50" + x="191.54141" + y="221.16039" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill-opacity:1;fill:#808080" + x="298.85208" + y="255.94875" + id="text471-2"><tspan + sodipodi:role="line" + id="tspan469-28" + x="298.85208" + y="255.94875" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato;fill-opacity:1;fill:#808080">Source</tspan><tspan + sodipodi:role="line" + x="298.85208" + y="305.94873" + id="tspan473-9" + style="fill-opacity:1;fill:#808080" /></text> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#808080;stroke-width:3.77953;stroke-linecap:square;stroke-opacity:1" + id="rect368-7-7" + width="135" + height="50" + x="320.08286" + y="327.32077" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill-opacity:1;fill:#808080" + x="439.64957" + y="362.10913" + id="text471-9-3"><tspan + sodipodi:role="line" + id="tspan469-2-6" + x="439.64957" + y="362.10913" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato;fill-opacity:1;fill:#808080">Compiler</tspan><tspan + sodipodi:role="line" + x="439.64957" + y="412.10913" + id="tspan473-0-1" + style="fill-opacity:1;fill:#808080" /></text> + <path + style="fill:none;stroke:#808080;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart-2)" + d="m 326.54141,246.16039 h 120" + id="path611-2" /> + <path + style="fill:none;stroke:#808080;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990-7)" + d="m 387.58282,327.32077 -1.04141,-81.16038" + id="path8986-9" /> + <text + xml:space="preserve" + style="font-size:18.8976px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill-opacity:1;fill:#808080" + x="449.96594" + y="371.21048" + id="text9623"><tspan + sodipodi:role="line" + id="tspan9621" + x="449.96594" + y="371.21048" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.8976px;font-family:Lato;-inkscape-font-specification:Lato;fill-opacity:1;fill:#808080">-1</tspan></text> + <path + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:2.04472;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1" + id="path10005" + sodipodi:type="arc" + sodipodi:cx="170.46747" + sodipodi:cy="383.03094" + sodipodi:rx="6.1569166" + sodipodi:ry="6.1569166" + sodipodi:start="0" + sodipodi:end="6.2714916" + sodipodi:arc-type="arc" + d="m 176.62438,383.03094 a 6.1569166,6.1569166 0 0 1 -6.13891,6.1569 6.1569166,6.1569166 0 0 1 -6.17481,-6.1209 6.1569166,6.1569166 0 0 1 6.10281,-6.19268 6.1569166,6.1569166 0 0 1 6.21049,6.08469" + sodipodi:open="true" /> + <path + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:2.04472;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1" + id="path10005-6" + sodipodi:type="arc" + sodipodi:cx="231.03075" + sodipodi:cy="383.03094" + sodipodi:rx="6.1569166" + sodipodi:ry="6.1569166" + sodipodi:start="0" + sodipodi:end="6.2714916" + sodipodi:arc-type="arc" + d="m 237.18766,383.03094 a 6.1569166,6.1569166 0 0 1 -6.13891,6.1569 6.1569166,6.1569166 0 0 1 -6.17481,-6.1209 6.1569166,6.1569166 0 0 1 6.10281,-6.19268 6.1569166,6.1569166 0 0 1 6.21049,6.08469" + sodipodi:open="true" /> + <path + style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:2.04472;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1" + id="path10005-5" + sodipodi:type="arc" + sodipodi:cx="200.74911" + sodipodi:cy="383.03094" + sodipodi:rx="6.1569166" + sodipodi:ry="6.1569166" + sodipodi:start="0" + sodipodi:end="6.2714916" + sodipodi:arc-type="arc" + d="m 206.90603,383.03094 a 6.1569166,6.1569166 0 0 1 -6.13892,6.1569 6.1569166,6.1569166 0 0 1 -6.17481,-6.1209 6.1569166,6.1569166 0 0 1 6.10282,-6.19268 6.1569166,6.1569166 0 0 1 6.21049,6.08469" + sodipodi:open="true" /> + </g> +</svg> diff --git a/Fosdem2023/img/Sneaky-Compiler.svg b/Fosdem2023/img/Sneaky-Compiler.svg new file mode 100644 index 0000000..76790cc --- /dev/null +++ b/Fosdem2023/img/Sneaky-Compiler.svg @@ -0,0 +1,267 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="105.51042mm" + height="55.136127mm" + viewBox="0 0 398.77956 208.3885" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Sneaky-Compiler.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + showguides="false" + inkscape:zoom="2.7250638" + inkscape:cx="229.53591" + inkscape:cy="95.043645" + inkscape:window-width="1916" + inkscape:window-height="1036" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="1" + inkscape:current-layer="layer1"> + <inkscape:grid + type="xygrid" + id="grid366" + spacingx="5" + spacingy="5" + originx="-444.22052" + originy="-202.3955" /> + </sodipodi:namedview> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker8990" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988" /> + </marker> + <rect + x="285.34802" + y="81.876205" + width="72.577995" + height="46.49157" + id="rect4504" /> + <marker + style="overflow:visible" + id="TriangleStart" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135" /> + </marker> + <marker + style="overflow:visible" + id="marker8990-6" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988-8" /> + </marker> + <marker + style="overflow:visible" + id="marker8990-4" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988-3" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-316.11023,-113.11023)"> + <path + style="fill:none;stroke:#ff0101;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990-4)" + d="M 516.93846,141.74131 573,142" + id="path8986-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990-6)" + d="m 515.97987,222.90169 -1.04141,-81.16038" + id="path8986-8" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368" + width="135" + height="50" + x="318" + y="115" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect370" + width="140" + height="50" + x="573" + y="115" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="425.31064" + y="149.78835" + id="text471"><tspan + sodipodi:role="line" + id="tspan469" + x="425.31064" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Source</tspan><tspan + sodipodi:role="line" + x="425.31064" + y="199.78835" + id="tspan473" /></text> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368-7" + width="134.99997" + height="98.448586" + x="446.54141" + y="221.16039" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ff0808;fill-opacity:1" + x="568.10809" + y="255.68668" + id="text471-9-0"><tspan + sodipodi:role="line" + x="568.10809" + y="255.68668" + id="tspan473-0-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato;fill:#ff0808;fill-opacity:1">Ć̡̹͇̼̲̰̱͐ͧ́̎ͫo̵̗̎ͭ̈̈̚͢ḿ̴̴͎̮̫̣͔̰̐̌̆ͨ̇͐ͯ̉̉̌̊͢pil̞ͤę̝͍̭̱͆̃ͦͫr̰̗̥̬̣̔̄͑̾̔͆̕̕</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="566.10809" + y="255.94873" + id="text471-9"><tspan + sodipodi:role="line" + id="tspan469-2" + x="566.10809" + y="255.94873" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Compiler</tspan><tspan + sodipodi:role="line" + x="566.10809" + y="305.94873" + id="tspan473-0" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="566.55933" + y="255.84323" + id="text471-9-2"><tspan + sodipodi:role="line" + id="tspan469-2-5" + x="566.55933" + y="255.84323" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato" /><tspan + sodipodi:role="line" + x="566.55933" + y="305.84323" + id="tspan473-0-4" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#f90000;fill-opacity:1" + x="681.55615" + y="149.3976" + id="text471-6-6"><tspan + sodipodi:role="line" + x="681.55615" + y="149.3976" + id="tspan473-6-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato;fill:#f90000;fill-opacity:1">B̧͔̹͔̜̗͙͉͎̻̹͚͕̫͛̈̀̊̔ͦ͂̈̍͘͡͠i̶̢̘̞͕̓̓̿̂̅ͮ͜͜͞n̯̲̫̥͇̞̞̬̥̜͍͕̺̱ͩͧ̆́̽ͧ̾̋̆ͤ̚̚̚͞ar̢̼̲͈̝̱̄y</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="679.07361" + y="149.92062" + id="text471-6"><tspan + sodipodi:role="line" + id="tspan469-0" + x="679.07361" + y="149.92062" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Binary</tspan><tspan + sodipodi:role="line" + x="679.07361" + y="199.92062" + id="tspan473-6" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart)" + d="M 453,140 H 573" + id="path611" /> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990)" + d="M 514.04141,221.16038 513,140" + id="path8986" /> + <text + xml:space="preserve" + style="font-size:26.4567px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="556.2843" + y="297.93332" + id="text17854"><tspan + sodipodi:role="line" + id="tspan17852" + x="556.2843" + y="297.93332" + style="font-size:26.4567px">(▀̿Ĺ̯▀̿ ̿)</tspan></text> + </g> +</svg> diff --git a/Fosdem2023/img/Source-Binary-Compiler.svg b/Fosdem2023/img/Source-Binary-Compiler.svg new file mode 100644 index 0000000..8afafdd --- /dev/null +++ b/Fosdem2023/img/Source-Binary-Compiler.svg @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="105.51042mm" + height="42.317436mm" + viewBox="0 0 398.77956 159.93991" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Source-Binary-Compiler.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + showguides="false" + inkscape:zoom="1.6060415" + inkscape:cx="76.274492" + inkscape:cy="162.51137" + inkscape:window-width="1916" + inkscape:window-height="1036" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="1" + inkscape:current-layer="layer1"> + <inkscape:grid + type="xygrid" + id="grid366" + spacingx="5" + spacingy="5" + originx="-444.22052" + originy="-202.39552" /> + </sodipodi:namedview> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker8990" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path8988" /> + </marker> + <rect + x="285.34802" + y="81.876205" + width="72.577995" + height="46.49157" + id="rect4504" /> + <marker + style="overflow:visible" + id="TriangleStart" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-316.11023,-113.11023)"> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368" + width="135" + height="50" + x="318" + y="115" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect370" + width="140" + height="50" + x="573" + y="115" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="425.31064" + y="149.78835" + id="text471"><tspan + sodipodi:role="line" + id="tspan469" + x="425.31064" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Source</tspan><tspan + sodipodi:role="line" + x="425.31064" + y="199.78835" + id="tspan473" /></text> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368-7" + width="135" + height="50" + x="446.54141" + y="221.16039" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="566.10809" + y="255.94873" + id="text471-9"><tspan + sodipodi:role="line" + id="tspan469-2" + x="566.10809" + y="255.94873" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Compiler</tspan><tspan + sodipodi:role="line" + x="566.10809" + y="305.94873" + id="tspan473-0" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Lato;-inkscape-font-specification:Lato;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="679.07361" + y="149.92062" + id="text471-6"><tspan + sodipodi:role="line" + id="tspan469-0" + x="679.07361" + y="149.92062" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Binary</tspan><tspan + sodipodi:role="line" + x="679.07361" + y="199.92062" + id="tspan473-6" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart)" + d="M 453,140 H 573" + id="path611" /> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8990)" + d="M 514.04141,221.16038 513,140" + id="path8986" /> + </g> +</svg> diff --git a/Fosdem2023/img/Source-Binary.svg b/Fosdem2023/img/Source-Binary.svg new file mode 100644 index 0000000..26dc5ba --- /dev/null +++ b/Fosdem2023/img/Source-Binary.svg @@ -0,0 +1,154 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="105.51041mm" + height="20.532848mm" + viewBox="0 0 398.77953 77.604464" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Bootstrapping.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + showguides="false" + inkscape:zoom="2.2942902" + inkscape:cx="217.27853" + inkscape:cy="142.52774" + inkscape:window-width="1916" + inkscape:window-height="1036" + inkscape:window-x="0" + inkscape:window-y="20" + inkscape:window-maximized="1" + inkscape:current-layer="layer1"> + <inkscape:grid + type="xygrid" + id="grid366" + spacingx="5" + spacingy="5" + originx="-128.11025" + originy="-89.285294" /> + </sodipodi:namedview> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker7577" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path7575" /> + </marker> + <rect + x="285.34802" + y="81.876205" + width="72.577995" + height="46.49157" + id="rect4504" /> + <marker + style="overflow:visible" + id="TriangleStart" + refX="3" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="TriangleStart" + markerWidth="5.3244081" + markerHeight="6.155385" + viewBox="0 0 5.3244081 6.1553851" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.5)" + style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt" + d="M 5.77,0 -2.88,5 V -5 Z" + id="path135" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-128.11023,-89.285301)"> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect368" + width="135" + height="50" + x="130" + y="115" /> + <rect + style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:3.77953;stroke-linecap:square" + id="rect370" + width="140" + height="50" + x="385" + y="115" /> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="237.31064" + y="149.78835" + id="text471"><tspan + sodipodi:role="line" + id="tspan469" + x="237.31064" + y="149.78835" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Source</tspan><tspan + sodipodi:role="line" + x="237.31064" + y="199.78835" + id="tspan473" /></text> + <text + xml:space="preserve" + style="font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end" + x="491.07361" + y="149.92062" + id="text471-6"><tspan + sodipodi:role="line" + id="tspan469-0" + x="491.07361" + y="149.92062" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.4567px;font-family:Lato;-inkscape-font-specification:Lato">Binary</tspan><tspan + sodipodi:role="line" + x="491.07361" + y="199.92062" + id="tspan473-6" /></text> + <path + style="fill:none;stroke:#000000;stroke-width:3.77953;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleStart);marker-start:url(#marker7577)" + d="M 265,140 H 385" + id="path611" /> + <text + xml:space="preserve" + id="text4502" + style="font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect4504)" + transform="translate(-21.308206,1.705223)"><tspan + x="336.69531" + y="117.26758" + id="tspan8085">?</tspan></text> + </g> +</svg> diff --git a/Fosdem2023/img/meme.jpg b/Fosdem2023/img/meme.jpg Binary files differnew file mode 100644 index 0000000..e015a1c --- /dev/null +++ b/Fosdem2023/img/meme.jpg diff --git a/Fosdem2023/template.tex b/Fosdem2023/template.tex new file mode 100644 index 0000000..0ae0832 --- /dev/null +++ b/Fosdem2023/template.tex @@ -0,0 +1,236 @@ +\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\selectcolormodel{gray} % Color B&W +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ + +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{fixltx2e} % provides \textsubscript + + +\usefonttheme{professionalfonts} % using non standard fonts for beamer +\usefonttheme{serif} % default family is serif + +% Font +\usepackage{fontspec} +\setmainfont[ + BoldFont = {*-Bold}, + ItalicFont = {*-Italic}, + BoldItalicFont = {*-BoldItalic}, +]{Lato} +\newcommand{\euro}{€} + +% Images with no captions +\usepackage{caption} +\captionsetup[figure]{labelformat=empty} + +% Bullet style +\useinnertheme{circles} +\newlength{\wideitemsep} +\setlength{\wideitemsep}{\itemsep} +\addtolength{\wideitemsep}{5pt} +\let\olditem\item +\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem} + +$if(euro)$ + \newcommand{\euro}{€} +$endif$ + +% Language +\usepackage{polyglossia} +\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} + +\newif\ifbibliography +$if(natbib)$ +\usepackage{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ + +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ + +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, + citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, +$else$ + pdfborder={0 0 0}, +$endif$ + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +$if(verbatim-in-note)$ +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(listings)$ +\usepackage{listings} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +\usepackage{caption} +% These lines are needed to make table captions work with longtable: +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +$endif$ + +% Prevent slide breaks in the middle of a paragraph: +\widowpenalties 1 10000 +\raggedbottom + +$if(section-titles)$ +\AtBeginPart{ + \let\insertpartnumber\relax + \let\partname\relax + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \let\insertsectionnumber\relax + \let\sectionname\relax + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \let\insertsubsectionnumber\relax + \let\subsectionname\relax + \frame{\subsectionpage} +} +$endif$ + +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\renewcommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ + +$if(strikeout)$ +\usepackage[normalem]{ulem} +% avoid problems with \sout in headers with hyperref: +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{0} +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + $if(latex-dir-rtl)$ + \usepackage[RTLdocument]{bidi} + $else$ + \usepackage{bidi} + $endif$ +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ + +$if(title)$ +\title{$title$} +$endif$ +$if(subtitle)$ +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +\date{$date$} + +\begin{document} +$if(title)$ +\frame{\titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +\begin{frame} +\tableofcontents[hideallsubsections] +\end{frame} + +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +\end{frame} + +$endif$ +$endif$ +$if(biblatex)$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\printbibliography[heading=none] +\end{frame} + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} diff --git a/Fosdem2024/Makefile b/Fosdem2024/Makefile new file mode 100644 index 0000000..1f2daf1 --- /dev/null +++ b/Fosdem2024/Makefile @@ -0,0 +1,25 @@ +TARGET = presentation.pdf + +TEMPLATE = template.tex +CONTENT = contents.md + +# IMG_DIR = img +# IMG_SRCS = $(wildcard $(IMG_DIR)/*.svg) +# IMG_BASENAME = $(notdir $(basename $(IMG_SRCS))) +# TMP_IMG_DIR = tmp +# IMGS = $(addsuffix .png, $(addprefix $(TMP_IMG_DIR)/, $(IMG_BASENAME))) + +all: $(TARGET) + +$(TARGET): $(CONTENT) $(TEMPLATE) # $(IMGS) + pandoc -f markdown+smart -t beamer $(CONTENT) -o $(TARGET) --pdf-engine=xelatex --template=$(TEMPLATE) + +# $(IMGS): $(TMP_IMG_DIR)/%.png: $(IMG_DIR)/%.svg +# mkdir -p $(TMP_IMG_DIR) +# inkscape $< --export-filename $@ --export-type=png --export-background-opacity=0.0 + +clean: + rm -r $(TARGET) # $(TMP_IMG_DIR) + +.PHONY: all clean $(CONTENT) $(TEMPLATE) + diff --git a/Fosdem2024/contents.md b/Fosdem2024/contents.md new file mode 100644 index 0000000..4c8b74e --- /dev/null +++ b/Fosdem2024/contents.md @@ -0,0 +1,271 @@ +--- +title: RISC-V Bootstrapping in Guix and Live-Bootstrap +subtitle: Status report for 2023, and what's coming up next + +license: CC-BY-SA +author: Ekaitz Zárraga +links-as-notes: true +lang: spanish +polyglossia-lang: + name: english +how-to: pandoc -f markdown+smart -t beamer contents.md -o beamer.pdf --pdf-engine=xelatex --template=template.tex +convert-img: inkscape IN.svg --export-filename OUT.png --export-type=png --export-background-opacity=0.0 # NOT NEEDED! +header-includes: + - \usepackage{multicol} + - \newcommand{\hideFromPandoc}[1]{#1} + - \hideFromPandoc{ + \let\Begin\begin + \let\End\end + } +... + +## Before we start + +If you want details and don't mind reading large text walls full of +nitty-gritty details, you can leave this talk and read [all the blogposts I did +on the process](https://ekaitz.elenq.tech/tag/bootstrapping-gcc-in-risc-v.html) + +**You can still stay here and smile, too.** + +## Who I am + +- Telecommunication engineer (EEE equivalent) +- Freelance engineer/programmer at [ElenQ.Tech](https://elenq.tech) +- Guix user and contributor +- You might remember me from my talk last year: + *"Bringing RISC-V to Guix's bootstrap"* + + + +## Context + +- In 2021 [NlNet][nlnet-grant-i] funded me to do some bootstrapping work: I + backported RISC-V support to GCC 4.6.4 from 7.5, and to our TinyCC-Boot from + upstream TinyCC. These were fundamental points in our bootstrap chain. +- I explained that in [FOSDEM 2023][fosdem-2023]. + +[nlnet-grant-i]: https://nlnet.nl/project/GNUMes-RISCV/index.html +[fosdem-2023]: https://archive.fosdem.org/2023/schedule/event/guixriscv/ + +\hfill ![\ ](img/nlnet.svg){height=25px}\ +\hfill ![\ ](img/NGIAssure.svg){height=15px} + + +## Intro + +- The work wasn't finished so I asked for a [second grant to + NlNet][nlnet-grant-ii]. +- I was tired of the previous effort and I needed help. I decided to bring more + people to the project: + - **Andrius Štikonas**: Involved in `live-bootstrap`, `stage-0` and the + related projects. Has the context awareness I lack. + - **Janneke**: `Mes` maintainer and author, `TinyCC-boot` maintainer and + `guix` contributor. All these projects are structural to the + bootstrapping process. + - More people +- My goal was to pay people for their good work, using the success of my + previous effort as a lever to get funded. + +[nlnet-grant-ii]: https://nlnet.nl/project/GNUMes-RISCV-bootstrap/ + +\hfill ![\ ](img/nlnet.svg){height=25px}\ +\hfill ![\ ](img/NGIAssure.svg){height=15px} + + +# In pictures + +## Bootstrapping process - Before + +\Begin{multicols}{2} + +- Colors represent RISC-V support: + - **\textcolor{red}{RED}**: no RISC-V support + - **\textcolor{orange}{ORANGE}**: some RISC-V support + - **\textcolor{green}{GREEN}**: full RISC-V support +- **TinyCC-boot** and **GCC (old)** are **\textcolor{red}{RED}**. +\vfill + +\columnbreak + +![\ ](img/Bootstrapping_simple.svg) + +\End{multicols} + +## Bootstrapping process - After the Backport (2022) + +\Begin{multicols}{2} + +- **Arrows** are still **\textcolor{red}{RED}** +- At that time I didn't know **TinyCC** was **\textcolor{orange}{ORANGE}**, + that was discovered later +- **GCC (old)** was actually **\textcolor{green}{GREEN}ER** than I thought +\vfill + +\columnbreak + +![\ ](img/Bootstrapping_with_backport.svg) + +\End{multicols} + +## Bootstrapping process - Now + +\Begin{multicols}{2} +- **TinyCC-Boot** is **\textcolor{green}{GREEN}** now +- The **\textcolor{green}{GREEN}** rectangle is included in `Guix` and + `live-bootstrap` +- **GCC (old)** is **\textcolor{green}{GREEN}** now: Tested in Debian in real + RISC-V hardware. +\vfill + +\columnbreak + +![\ ](img/Bootstrapping_now.svg) + +\End{multicols} + +## Bootstrapping process - Future + +\Begin{multicols}{2} +- **\textcolor{red}{->} TinyCC** requires changes in MesLibC +- **\textcolor{red}{->} GCC (old)**: + - requires `make` + - TinyCC claims to be able to build GCC 4, but we didn't test that (i386 + bootstrap uses GCC 2.95 in between). +- **\textcolor{red}{->} GCC** should *just work* +- A powerful `libc` is needed, built with TinyCC, which doesn't support + Extended Assembly. +\vfill + +\columnbreak + +![\ ](img/Bootstrapping_now.svg) + +\End{multicols} + + +# Questions? + +## + +<!-- EXTRA --> + +# Limitations of the backport + +## TinyCC + +- I only tested the backend, in an emulated environment, using a using TinyCC + as a cross-compiler +- I tested on **GLibC**, but in the bootstrapping process it uses **MesLibC**, + a minimal **LibC**, part of Mes. +- **TinyCC-Boot** is in fact compiled several times (up to 6) with different + features (using conditional compilation via macro definitions like `-D...`). + - In a cross compiled environment this is not possible to test +- I didn't test the TinyCC **RISC-V assembler**, which happened to be + unimplemented (yeah... LOL), and it's needed for the **LibC**. + +## TinyCC + +![TinyCC-Boot bootstrapping process](img/tcc-boot.svg) + +## GCC + +- I tested it as a Cross-Compiler, so only the backend was tested. Again, no + bootstrap[^gcc-bootstrap]. +- It never compiled itself +- I didn't work on the C++ support + +[^gcc-bootstrap]: GCC has a bootstrap process that checks if the compiler works + correctly. First, it's compiled with your compiler of choice. Then, the + resulting binary is used to compile the GCC codebase again. The result of + that compiles GCC again. Then the binaries are compared, to make sure they + are identical. This can't be done in a cross-compiled environment, for + obvious reasons. + +# The work + +## TinyCC-Boot + +We focused on this, and let the other projects be carried by this effort. + +- Andrius and I spent many nights debugging crazy things in here. +- TinyCC's codebase is hard to read +- Many errors we got were not reproducible using a TinyCC compiled with GCC, so + we needed to build it from MesCC, which is very slow +- MesCC doesn't provide very helpful debug symbols +- We learned many things as we went + +> I wouldn't have the energy to make this without Andrius. + +## TinyCC-Boot - Crazy things + +1. Body is never executed: + + ``` c + if ( x < 8 ) { + // body + } + ``` +2. `A << 20 >> 20` +3. `__global_pointer$ is not a valid symbol` +4. Assembler uses a weird syntax and doesn't support Extended Assembly +5. `cannot cast from/to void` +6. And segfaults, segfaults everywhere! + +[Read more about them here](https://ekaitz.elenq.tech/bootstrapGcc8.html) + +## TinyCC-Boot - Results + +We finally managed to bootstrap TinyCC-Boot. + +- Andrius included the [build recipe in `live-bootstrap`](https://github.com/fosslinux/live-bootstrap/blob/master/steps/tcc-0.9.26/pass1.kaem) +- I did the [`guix` recipe](https://issues.guix.gnu.org/68222) + +## GNU Mes + +The problems we found in **TinyCC-Boot** made us improve Mes in several ways: + +- **MesCC**, the C compiler, had some limitations that were unnoticed in the i386 + bootstrap that appeared in RISC-V: faulty `switch-case`s, wrong `struct` + initializations, some integer weirdness... +- **MesLibC**, had to be split for our TinyCC as it doesn't support Extended + Assembly, and it also needed some extra tweaks: `char` signedness, `va_args` + support, build script support for the changes... + +> Having Janneke with us made the process very smooth. + + +## GCC + +- We compiled GCC with itself in a Debian machine in real RISC-V hardware +- Including C++ support +- [Only needed a few commits!](https://github.com/ekaitz-zarraga/gcc/compare/working-compiler...riscv) +- Guix recipe is pending, as we need to fix other steps to be able to add this: + `make`, a proper `libc`, TinyCC... + + +# Last words + +## Last words + +- People is important: I felt alone, and I didn't know how to continue. If I + had to spend another year working alone I would've just rejected the project. + **Bringing people gave me energy, knowledge and emotional support** + +- Money is important: thanks to NlNet I had the chance to pay people for their + work and buy some hardware. Covering people's basic needs is fundamental. + **Getting paid makes people independent, so they can focus on what they are + good at instead of struggling to survive** + +## So + +- Thanks, Andrius and Janneke +- Thanks, NlNet +- And... + +# Thank you + +## Contact and take part + +- Email me: <ekaitz@elenq.tech> +- Relevant IRC channels: `#bootstrappable`, `#guix`, `#guix-risc-v` + diff --git a/Fosdem2024/img/Bootstrapping_now.svg b/Fosdem2024/img/Bootstrapping_now.svg new file mode 100644 index 0000000..314dd32 --- /dev/null +++ b/Fosdem2024/img/Bootstrapping_now.svg @@ -0,0 +1,397 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="70mm" + height="142.82118mm" + viewBox="0 0 70 142.82118" + version="1.1" + id="svg18419" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Bootstrapping_now.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview18421" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="2.3329719" + inkscape:cx="140.59321" + inkscape:cy="124.09065" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs18416"> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-0" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-1" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-5" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-4" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-7" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-9" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="557.94611" + height="67.128738" + id="rect9558-3" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(3.0505103,6.2599354)"> + <rect + style="fill:#c8ffbd;fill-opacity:1;fill-rule:evenodd;stroke:#207b30;stroke-width:0.499582;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect2124" + width="69.50042" + height="59.50042" + x="-2.8007193" + y="-0.4704206" + ry="0" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#54ce44;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle)" + d="m 32.117028,15.339581 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#54ce44;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-0)" + d="m 32.117028,34.963641 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-3" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2)" + d="m 32.117028,54.914701 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-6" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-1)" + d="m 32.117028,74.996401 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-5" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-4)" + d="m 32.117028,94.906531 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-65" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#fdc015;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-6)" + d="m 32.117028,114.78939 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-37" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#54ce44;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9" + width="60.419399" + height="15.745672" + x="1.4494902" + y="41.12505" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#54ce44;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-8" + width="60.419399" + height="15.745672" + x="1.4494902" + y="80.970306" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="1.2797889" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7" + width="60.419399" + height="15.745672" + x="1.4494902" + y="21.202419" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-0" + width="60.419399" + height="15.745672" + x="1.4494902" + y="100.89293" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="61.047672" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4-5" + width="60.419399" + height="15.745672" + x="1.4494902" + y="120.81557" + ry="6.0488062" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.684766,-30.999119)" + id="text9556" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-96.614113" + y="0"><tspan + x="164.57152" + y="160.20312" + id="tspan1806"><tspan + style="font-weight:bold;font-size:30.2362px;font-family:B612;-inkscape-font-specification:'B612 Bold';text-align:center;text-anchor:middle" + id="tspan1804">Stage0-Posix</tspan> </tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-84.932375,-39.454495)" + id="text9556-67" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.8976px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-3);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-96.614113" + y="0"><tspan + x="312.51959" + y="142.18391" + id="tspan1810"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold';text-align:center;text-anchor:middle" + id="tspan1808">Guix and Live-Bootstrap</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.396744,-8.2070195)" + id="text9556-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.2014" + y="152.60678" + id="tspan1814"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1812">Mes</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.276749,10.613221)" + id="text9556-6-8-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="167.97307" + y="152.60678" + id="tspan1818"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1816">TinyCC-Boot</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.294746,30.377451)" + id="text9556-6-8-9-0" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="208.79196" + y="152.60678" + id="tspan1822"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1820">TinyCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.052744,50.491691)" + id="text9556-6-8-9-0-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="187.62656" + y="152.60678" + id="tspan1826"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1824">GCC (old)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.314746,70.831921)" + id="text9556-6-8-9-0-3-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.95729" + y="152.60678" + id="tspan1830"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1828">GCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-36.930746,90.826161)" + id="text9556-6-8-9-0-3-5-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="170.24075" + y="152.60678" + id="tspan1834"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1832">The World™</tspan></tspan></text> + </g> +</svg> diff --git a/Fosdem2024/img/Bootstrapping_simple.svg b/Fosdem2024/img/Bootstrapping_simple.svg new file mode 100644 index 0000000..1fbc6fc --- /dev/null +++ b/Fosdem2024/img/Bootstrapping_simple.svg @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="60.419399mm" + height="135.28145mm" + viewBox="0 0 60.419399 135.28145" + version="1.1" + id="svg18419" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Bootstrapping_simple.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview18421" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.1063257" + inkscape:cx="97.620442" + inkscape:cy="251.73419" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs18416"> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-0" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-1" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-5" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-4" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-7" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-9" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-2" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-1.4494897,-1.2797884)"> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#54ce44;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle)" + d="m 32.117028,15.339581 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-0)" + d="m 32.117028,34.963641 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-3" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2)" + d="m 32.117028,54.914701 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-6" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-1)" + d="m 32.117028,74.996401 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-5" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-4)" + d="m 32.117028,94.906531 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-65" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#fdc015;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-6)" + d="m 32.117028,114.78939 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-37" /> + <rect + style="fill:#ce4444;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9" + width="60.419399" + height="15.745672" + x="1.4494902" + y="41.12505" + ry="6.0488062" /> + <rect + style="fill:#ce4444;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-8" + width="60.419399" + height="15.745672" + x="1.4494902" + y="80.970306" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="1.2797889" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7" + width="60.419399" + height="15.745672" + x="1.4494902" + y="21.202419" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-0" + width="60.419399" + height="15.745672" + x="1.4494902" + y="100.89293" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="61.047672" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4-5" + width="60.419399" + height="15.745672" + x="1.4494902" + y="120.81557" + ry="6.0488062" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.684766,-30.999119)" + id="text9556" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-96.614113" + y="0"><tspan + x="164.57152" + y="160.20312" + id="tspan1662"><tspan + style="font-weight:bold;font-size:30.2362px;font-family:B612;-inkscape-font-specification:'B612 Bold';text-align:center;text-anchor:middle" + id="tspan1660">Stage0-Posix</tspan> </tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.396744,-8.2070195)" + id="text9556-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.2014" + y="152.60678" + id="tspan1666"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1664">Mes</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.276749,10.613221)" + id="text9556-6-8-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="167.97307" + y="152.60678" + id="tspan1670"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1668">TinyCC-Boot</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.294746,30.377451)" + id="text9556-6-8-9-0" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="208.79196" + y="152.60678" + id="tspan1674"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1672">TinyCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.052744,50.491691)" + id="text9556-6-8-9-0-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="187.62656" + y="152.60678" + id="tspan1678"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1676">GCC (old)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.314746,70.831921)" + id="text9556-6-8-9-0-3-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.95729" + y="152.60678" + id="tspan1682"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1680">GCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-36.930746,90.826161)" + id="text9556-6-8-9-0-3-5-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="170.24075" + y="152.60678" + id="tspan1686"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1684">The World™</tspan></tspan></text> + </g> +</svg> diff --git a/Fosdem2024/img/Bootstrapping_with_backport.svg b/Fosdem2024/img/Bootstrapping_with_backport.svg new file mode 100644 index 0000000..44d1803 --- /dev/null +++ b/Fosdem2024/img/Bootstrapping_with_backport.svg @@ -0,0 +1,371 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="60.419399mm" + height="135.28145mm" + viewBox="0 0 60.419399 135.28145" + version="1.1" + id="svg18419" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="Bootstrapping_with_backport.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview18421" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="1.1063257" + inkscape:cx="70.50365" + inkscape:cy="252.63808" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs18416"> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-0" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-1" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-5" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-4" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-7" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-9" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-2" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-1.4494897,-1.2797884)"> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#54ce44;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle)" + d="m 32.117028,15.339581 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-0)" + d="m 32.117028,34.963641 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-3" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2)" + d="m 32.117028,54.914701 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-6" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-1)" + d="m 32.117028,74.996401 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-5" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-4)" + d="m 32.117028,94.906531 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-65" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#fdc015;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-6)" + d="m 32.117028,114.78939 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-37" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9" + width="60.419399" + height="15.745672" + x="1.4494902" + y="41.12505" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-8" + width="60.419399" + height="15.745672" + x="1.4494902" + y="80.970306" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="1.2797889" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7" + width="60.419399" + height="15.745672" + x="1.4494902" + y="21.202419" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-0" + width="60.419399" + height="15.745672" + x="1.4494902" + y="100.89293" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4" + width="60.419399" + height="15.745672" + x="1.4494902" + y="61.047672" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4-5" + width="60.419399" + height="15.745672" + x="1.4494902" + y="120.81557" + ry="6.0488062" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.684766,-30.999119)" + id="text9556" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-96.614113" + y="0"><tspan + x="164.57152" + y="160.20312" + id="tspan1232"><tspan + style="font-weight:bold;font-size:30.2362px;font-family:B612;-inkscape-font-specification:'B612 Bold';text-align:center;text-anchor:middle" + id="tspan1230">Stage0-Posix</tspan> </tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.396744,-8.2070195)" + id="text9556-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.2014" + y="152.60678" + id="tspan1236"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1234">Mes</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.276749,10.613221)" + id="text9556-6-8-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="167.97307" + y="152.60678" + id="tspan1240"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1238">TinyCC-Boot</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.294746,30.377451)" + id="text9556-6-8-9-0" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="208.79196" + y="152.60678" + id="tspan1244"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1242">TinyCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.052744,50.491691)" + id="text9556-6-8-9-0-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="187.62656" + y="152.60678" + id="tspan1248"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1246">GCC (old)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-37.314746,70.831921)" + id="text9556-6-8-9-0-3-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.95729" + y="152.60678" + id="tspan1252"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1250">GCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-36.930746,90.826161)" + id="text9556-6-8-9-0-3-5-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="170.24075" + y="152.60678" + id="tspan1256"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1254">The World™</tspan></tspan></text> + </g> +</svg> diff --git a/Fosdem2024/img/Both.svg b/Fosdem2024/img/Both.svg new file mode 100644 index 0000000..144b76b --- /dev/null +++ b/Fosdem2024/img/Both.svg @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + id="Calque_1" + data-name="Calque 1" + viewBox="0 0 657.78 339.99999" + version="1.1" + sodipodi:docname="Both.svg" + width="657.78003" + height="340" + xml:space="preserve" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview + id="namedview34" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="0.75696054" + inkscape:cx="351.40537" + inkscape:cy="282.04905" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="Calque_1" /><defs + id="defs9"><style + id="style2">.cls-1{fill:url(#Sfumatura_senza_nome_277);}.cls-2{fill:#fff;}.cls-3{fill:#5590a1;}</style><linearGradient + id="Sfumatura_senza_nome_277" + x1="365.94" + y1="183.94" + x2="132.10001" + y2="411.34" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.69957735,0,0,0.69957735,33.549409,51.988183)"><stop + offset="0" + stop-color="#5697ff" + id="stop4" /><stop + offset="1" + stop-color="#6a0041" + id="stop6" /></linearGradient></defs><title + id="title11">Logo-NGIAssure-tag</title><g + id="g672" + transform="translate(-9.3953307)"><path + class="cls-1" + d="m 330.86978,256.48164 -10.64057,-10.58461 a 8.9336028,8.9336028 0 0 1 -2.6444,-6.34516 v -24.835 A 13.012139,13.012139 0 0 0 304.61465,201.74671 H 110.91567 a 13.005143,13.005143 0 0 0 -12.963167,12.97016 v 90.98004 a 13.005143,13.005143 0 0 0 12.963167,12.97016 h 193.68499 a 13.005143,13.005143 0 0 0 12.97715,-12.97016 v -21.44905 a 8.9615859,8.9615859 0 0 1 2.62342,-6.29619 l 10.66855,-10.68954 a 7.6114016,7.6114016 0 0 0 0,-10.78049 z" + id="path13" + style="fill:url(#Sfumatura_senza_nome_277);stroke-width:0.699577" /><path + class="cls-2" + d="m 287.85977,222.80399 v 0 a 8.6537718,8.6537718 0 0 1 8.66077,8.65377 v 57.49826 a 8.6607676,8.6607676 0 0 1 -8.66077,8.66077 v 0 a 8.6537718,8.6537718 0 0 1 -8.65377,-8.66077 v -57.49826 a 8.6537718,8.6537718 0 0 1 8.65377,-8.65377 z" + id="path15" + style="stroke-width:0.699577" /><path + class="cls-2" + d="m 259.8347,259.06308 h -9.59121 a 8.8566493,8.8566493 0 0 0 -8.91961,8.05213 8.6607676,8.6607676 0 0 0 8.63978,9.23443 v 0 a 1.3571801,1.3571801 0 0 1 1.30122,1.74894 7.6253931,7.6253931 0 0 1 -5.33078,5.08593 30.242729,30.242729 0 0 1 -7.75132,0.96541 25.422641,25.422641 0 0 1 -12.55741,-3.05015 21.88278,21.88278 0 0 1 -8.6048,-8.49287 26.583939,26.583939 0 0 1 0,-24.90496 21.470029,21.470029 0 0 1 8.65377,-8.4369 26.430032,26.430032 0 0 1 12.71831,-2.99419 25.380666,25.380666 0 0 1 14.69113,4.4633 7.6953509,7.6953509 0 0 0 9.0945,-0.19588 7.59741,7.59741 0 0 0 -0.37077,-12.27059 37.483355,37.483355 0 0 0 -6.47109,-3.43492 46.39597,46.39597 0 0 0 -17.84622,-3.309 44.54209,44.54209 0 0 0 -21.16222,4.967 36.797769,36.797769 0 0 0 -14.69112,13.78867 40.15574,40.15574 0 0 0 0,39.87591 37.021633,37.021633 0 0 0 14.58619,13.78867 43.772555,43.772555 0 0 0 20.94534,4.967 54.839869,54.839869 0 0 0 16.13925,-2.45552 l 0.16091,-0.049 a 19.979929,19.979929 0 0 0 13.97755,-19.15443 v -10.60559 a 7.6114016,7.6114016 0 0 0 -7.6114,-7.58342 z" + id="path17" + style="stroke-width:0.699577" /><path + class="cls-2" + d="m 187.61733,231.35282 v 57.71513 a 8.5488352,8.5488352 0 0 1 -8.55583,8.54884 h -1.62302 a 8.5488352,8.5488352 0 0 1 -6.611,-3.12711 l -28.42383,-34.62209 a 3.5538529,3.5538529 0 0 0 -6.2962,2.25264 v 26.94772 a 8.5488352,8.5488352 0 0 1 -8.54883,8.54884 v 0 a 8.5488352,8.5488352 0 0 1 -8.54884,-8.54884 v -57.71513 a 8.5488352,8.5488352 0 0 1 8.54884,-8.54883 h 1.72096 a 8.5348437,8.5348437 0 0 1 6.618,3.1341 l 28.32589,34.58711 a 3.5468572,3.5468572 0 0 0 6.29619,-2.24565 v -26.92673 a 8.555831,8.555831 0 0 1 8.54184,-8.54883 v 0 a 8.5488352,8.5488352 0 0 1 8.55583,8.54883 z" + id="path19" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 383.6389,267.45801 h -12.19363 l -2.3226,5.6316 h -6.24023 l 11.71792,-26.29012 h 6.00937 l 11.7529,26.29012 h -6.38014 z m -1.91684,-4.62421 -4.19746,-10.05992 -4.19747,10.05992 z" + id="path21" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 405.21387,272.69784 a 14.040517,14.040517 0 0 1 -4.67318,-2.19667 l 2.06376,-4.58223 a 13.907598,13.907598 0 0 0 4.01557,1.99379 15.019926,15.019926 0 0 0 4.65919,0.74855 7.4015284,7.4015284 0 0 0 3.83368,-0.76953 2.3225968,2.3225968 0 0 0 1.23825,-2.04277 1.9518208,1.9518208 0 0 0 -0.73455,-1.56006 5.4706949,5.4706949 0 0 0 -1.87487,-0.9934 c -0.76254,-0.25185 -1.79792,-0.52468 -3.09913,-0.8255 a 42.282455,42.282455 0 0 1 -4.89704,-1.39915 7.9751818,7.9751818 0 0 1 -3.28801,-2.29462 6.1702722,6.1702722 0 0 1 -1.39916,-4.19746 7.3175791,7.3175791 0 0 1 1.23825,-4.14849 8.3039832,8.3039832 0 0 1 3.73575,-2.95222 15.390702,15.390702 0 0 1 6.10731,-1.08435 20.287743,20.287743 0 0 1 4.89704,0.59464 14.761082,14.761082 0 0 1 4.19746,1.72796 l -1.87487,4.62421 a 14.691124,14.691124 0 0 0 -7.28959,-2.09874 6.7998919,6.7998919 0 0 0 -3.77072,0.8325 2.5044869,2.5044869 0 0 0 -1.22426,2.17569 2.0987321,2.0987321 0 0 0 1.39915,2.00778 21.539987,21.539987 0 0 0 4.29541,1.29422 42.674218,42.674218 0 0 1 4.89704,1.39916 8.1990466,8.1990466 0 0 1 3.28801,2.25264 6.0443483,6.0443483 0 0 1 1.39915,4.19746 7.1706679,7.1706679 0 0 1 -1.25923,4.11352 8.4998648,8.4998648 0 0 1 -3.77073,2.95221 15.502634,15.502634 0 0 1 -6.1213,1.08435 21.400071,21.400071 0 0 1 -5.98838,-0.85349 z" + id="path23" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 436.68785,272.69784 a 13.991547,13.991547 0 0 1 -4.68017,-2.19667 l 2.09873,-4.58223 a 13.907598,13.907598 0 0 0 4.01558,1.99379 15.019926,15.019926 0 0 0 4.65918,0.74855 7.3945326,7.3945326 0 0 0 3.82669,-0.76953 2.3225968,2.3225968 0 0 0 1.23825,-2.04277 1.9658124,1.9658124 0 0 0 -0.69957,-1.56006 5.5056738,5.5056738 0 0 0 -1.88187,-0.9934 c -0.76254,-0.25185 -1.79791,-0.52468 -3.09912,-0.8255 a 43.121948,43.121948 0 0 1 -4.89705,-1.39915 8.0241522,8.0241522 0 0 1 -3.28801,-2.29462 6.2052511,6.2052511 0 0 1 -1.39915,-4.19746 7.2756045,7.2756045 0 0 1 1.24524,-4.14849 8.3039832,8.3039832 0 0 1 3.73575,-2.95222 15.348727,15.348727 0 0 1 6.10031,-1.08435 20.287743,20.287743 0 0 1 4.89704,0.59464 14.691124,14.691124 0 0 1 4.19747,1.72796 l -1.87487,4.62421 a 14.642154,14.642154 0 0 0 -7.2826,-2.09874 6.8068876,6.8068876 0 0 0 -3.77772,0.8325 2.5114827,2.5114827 0 0 0 -1.21726,2.17569 2.0987321,2.0987321 0 0 0 1.39915,2.00778 21.48402,21.48402 0 0 0 4.3024,1.29422 43.121948,43.121948 0 0 1 4.89704,1.39916 8.248017,8.248017 0 0 1 3.28802,2.25264 6.0723314,6.0723314 0 0 1 1.36417,4.19746 7.2196383,7.2196383 0 0 1 -1.25224,4.11352 8.4858733,8.4858733 0 0 1 -3.77772,2.95221 15.481647,15.481647 0 0 1 -6.1213,1.08435 21.351101,21.351101 0 0 1 -6.01637,-0.85349 z" + id="path25" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 468.45566,270.43121 q -3.1411,-3.12011 -3.1341,-8.90562 v -14.69112 h 6.07932 v 14.46726 q 0,7.06573 5.86246,7.05873 a 5.4706949,5.4706949 0 0 0 4.35137,-1.70697 c 1.00739,-1.14031 1.50409,-2.92423 1.50409,-5.35176 v -14.49525 h 6.00937 v 14.69113 q 0,5.7925 -3.1341,8.90562 -3.13411,3.11312 -8.76571,3.11312 -5.6316,0.028 -8.7727,-3.08514 z" + id="path27" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 519.39889,273.0966 -5.07194,-7.32457 h -5.59662 v 7.32457 H 502.651 v -26.29012 h 11.37513 a 14.691124,14.691124 0 0 1 6.06534,1.1613 8.6887507,8.6887507 0 0 1 5.35176,8.39493 8.5488352,8.5488352 0 0 1 -5.40773,8.29699 l 5.89744,8.45089 z m -1.53908,-20.14783 a 6.3871412,6.3871412 0 0 0 -4.19746,-1.18228 h -4.96 v 9.15747 h 4.96 a 6.3451666,6.3451666 0 0 0 4.19746,-1.19628 4.1974641,4.1974641 0 0 0 1.39916,-3.38596 4.1484937,4.1484937 0 0 0 -1.39916,-3.39295 z" + id="path29" + style="stroke-width:0.699577" /><path + class="cls-3" + d="m 558.1135,268.21355 v 4.89704 h -20.35071 v -26.30411 h 19.868 v 4.89705 h -13.82365 v 5.70855 h 12.20762 v 4.72914 h -12.20762 v 6.08632 z" + id="path31" + style="stroke-width:0.699577" /></g><metadata + id="metadata263"><rdf:RDF><cc:Work + rdf:about=""><dc:title>Logo-NGIAssure-tag</dc:title></cc:Work></rdf:RDF></metadata><g + id="g660"><g + id="g631" + transform="translate(-2.0443409,-158.98088)"><g + id="g466" + transform="translate(96.083097,169.79863)"><g + id="Layer" /><g + id="g435"><path + fill="#98bf00" + d="m 446.602,73.8789 2.5,-13.6449 h -12.895 l 3.75,-20.089 -15.445,6.046 -2.5,14.043 h -9.395 l -2.5,13.6449 h 9.246 l -3.148,17.293 c -0.149,0.9531 -0.399,2.3515 -0.649,4.1484 -0.25,1.8008 -0.402,3.3985 -0.402,4.7497 0.051,6.246 1.551,11.395 4.5,15.446 2.949,4.144 7.746,6.593 14.445,7.343 l 6.446,-13.293 c -3.45,-0.449 -6.047,-1.8 -7.895,-4.097 -1.851,-2.352 -2.75,-5.301 -2.75,-8.8987 0,-0.6992 0.102,-1.6992 0.25,-3.0469 0.149,-1.3515 0.301,-2.4492 0.449,-3.3007 l 3,-16.3438 z" + id="path389" /><path + fill="#98bf00" + d="m 310.707,72.332 c 2.398,-0.8515 4.5,-1.3008 6.25,-1.3008 1.898,0 3.496,0.5508 4.797,1.6485 1.25,1.0508 1.848,2.6015 1.848,4.75 0,0.5976 -0.098,1.5 -0.301,2.75 -0.199,1.1484 -0.348,2.1992 -0.496,3.0976 l -3.602,16.8907 c -0.25,1.301 -0.5,2.652 -0.75,4.051 -0.25,1.449 -0.348,2.699 -0.348,3.746 0,4.051 1.098,7.449 3.348,10.148 2.149,2.699 5.996,4.297 11.547,4.746 l 6.348,-12.843 c -2.153,-0.348 -3.7,-1.149 -4.649,-2.399 -1,-1.199 -1.5,-2.898 -1.5,-5.047 0,-0.5 0.051,-1.101 0.149,-1.75 0.05,-0.652 0.152,-1.1989 0.199,-1.6012 l 3.648,-17.1915 c 0.301,-1.4492 0.551,-2.8984 0.75,-4.3476 0.203,-1.3985 0.301,-2.8008 0.301,-4.1485 0,-4.9492 -1.449,-8.9452 -4.348,-11.8942 -2.949,-2.949 -7.046,-4.449 -12.296,-4.449 -3.047,0 -5.946,0.5 -8.793,1.5 -2.801,0.949 -6.2,2.546 -10.149,4.898 -0.148,-0.949 -0.5,-2.102 -1,-3.398 -0.547,-1.25 -1.148,-2.352 -1.797,-3.352 l -13.394,5.75 c 1.148,1.75 2.047,3.598 2.597,5.496 0.5,1.8985 0.75,3.6992 0.75,5.3477 0,0.8515 -0.05,1.8984 -0.199,3.0508 -0.101,1.1484 -0.25,2.0468 -0.402,2.6992 l -7.945,42.3323 h 14.394 l 8.445,-45.6839 c 2.051,-1.5469 4.25,-2.6992 6.598,-3.4961 z" + id="path391" /><path + fill="#98bf00" + d="m 350.742,80.0781 c -1.551,4.5977 -2.301,9.4961 -2.301,14.6446 0,4.4961 0.602,8.4963 1.75,11.9963 1.149,3.496 2.801,6.445 4.899,8.797 2.051,2.398 4.598,4.195 7.547,5.445 2.949,1.25 6.246,1.898 9.847,1.898 4.348,0 8.645,-0.797 12.946,-2.398 4.347,-1.598 8.144,-4.098 11.394,-7.445 l -5.398,-12.497 c -2.5,2.801 -5.25,4.899 -8.297,6.348 -3.051,1.449 -6.098,2.149 -9.098,2.149 -3.496,0 -6.246,-1.098 -8.246,-3.297 -1.949,-2.25 -2.949,-5.051 -2.949,-8.3479 v -0.9492 c 0,-0.3985 0.051,-0.8008 0.152,-1.1992 2.649,-0.3516 5.645,-0.8008 8.996,-1.3985 3.348,-0.6015 6.746,-1.3008 10.196,-2.1015 3.449,-0.8477 6.797,-1.7969 10.093,-2.7969 3.25,-1 6.149,-2.0508 8.598,-3.1016 v -5.7461 c 0,-3.5469 -0.551,-6.7461 -1.648,-9.5976 -1.149,-2.7465 -2.649,-5.1485 -4.598,-7.1955 -1.949,-2 -4.301,-3.5 -6.949,-4.5 -2.598,-1.047 -5.446,-1.597 -8.496,-1.597 -4.45,0 -8.598,1 -12.344,2.949 -3.801,1.949 -7.047,4.648 -9.695,8.0974 -2.75,3.3984 -4.848,7.3437 -6.399,11.8437 z m 21.641,-10.0976 c 1.551,-0.8477 3.301,-1.2461 5.25,-1.2461 2.648,0 4.847,0.8476 6.594,2.5976 1.75,1.6992 2.652,4.2461 2.652,7.6953 -1.449,0.4493 -3.152,1 -5.149,1.5508 -2.05,0.5 -4.097,1 -6.199,1.4492 -2.148,0.4493 -4.199,0.8985 -6.246,1.3008 -2.051,0.3477 -3.801,0.6485 -5.301,0.8985 0.25,-2.0977 0.704,-4.0977 1.403,-5.9493 0.75,-1.8476 1.699,-3.4961 2.847,-4.8984 1.25,-1.3984 2.598,-2.5469 4.149,-3.3984 z" + fill-rule="evenodd" + id="path393" /><path + fill="#000000" + d="m 404.172,140.453 c 0,-1.25 -0.203,-2.398 -0.602,-3.398 -0.398,-1 -0.949,-1.848 -1.597,-2.598 -0.703,-0.699 -1.5,-1.25 -2.45,-1.601 -0.949,-0.348 -2,-0.547 -3.101,-0.547 -1.449,0 -2.797,0.297 -4.047,0.847 -1.25,0.551 -2.348,1.352 -3.297,2.348 -0.953,1 -1.699,2.152 -2.25,3.5 -0.551,1.352 -0.851,2.801 -0.851,4.398 0,1.25 0.199,2.348 0.601,3.399 0.348,1 0.899,1.851 1.598,2.551 0.652,0.749 1.5,1.296 2.449,1.699 0.949,0.348 2,0.547 3.148,0.547 1.403,0 2.75,-0.297 4,-0.848 1.25,-0.551 2.348,-1.352 3.297,-2.348 0.95,-0.953 1.7,-2.152 2.25,-3.5 0.551,-1.351 0.852,-2.847 0.852,-4.449 z m -13.895,-0.051 c 0.297,-0.898 0.7,-1.699 1.2,-2.398 0.546,-0.699 1.199,-1.25 1.949,-1.699 0.75,-0.449 1.547,-0.649 2.496,-0.649 1.449,0 2.5,0.45 3.25,1.348 0.75,0.852 1.148,2.102 1.148,3.648 0,0.95 -0.148,1.903 -0.449,2.852 -0.25,0.898 -0.648,1.699 -1.199,2.398 -0.551,0.7 -1.199,1.25 -1.949,1.699 -0.75,0.399 -1.598,0.598 -2.5,0.598 -1.45,0 -2.496,-0.449 -3.246,-1.297 -0.75,-0.902 -1.153,-2.101 -1.153,-3.648 0,-0.949 0.153,-1.902 0.453,-2.852 z" + fill-rule="evenodd" + id="path395" /><path + fill="#000000" + d="m 434.559,132.559 h -3.551 l -1.899,11.043 c -0.05,0.152 -0.097,0.402 -0.097,0.75 0,0.351 0,0.601 0,0.851 h -0.153 l -6.394,-12.644 h -3.352 l -3.347,18.742 h 3.597 l 2,-11.297 c 0.051,-0.148 0.051,-0.398 0.051,-0.648 0,-0.25 0,-0.551 0,-0.852 h 0.149 l 6.546,12.945 3.2,-0.3 z" + id="path397" /><path + fill="#000000" + d="m 374.383,132.559 h -3.649 l -3.347,18.742 h 3.695 z" + id="path399" /><path + fill="#000000" + d="m 328.949,132.559 h -4.246 c -0.801,1.347 -1.652,2.898 -2.601,4.547 -0.95,1.648 -1.848,3.347 -2.747,5.046 -0.902,1.7 -1.699,3.348 -2.449,4.95 -0.75,1.597 -1.351,2.999 -1.801,4.199 h 3.848 c 0.152,-0.352 0.301,-0.801 0.5,-1.25 0.199,-0.449 0.402,-0.949 0.652,-1.399 0.2,-0.453 0.399,-0.902 0.598,-1.351 0.199,-0.449 0.399,-0.848 0.551,-1.199 h 6.496 c 0.051,0.449 0.051,0.898 0.102,1.398 l 0.148,1.449 c 0.051,0.449 0.102,0.903 0.152,1.352 0.047,0.449 0.047,0.797 0.047,1.148 l 3.699,-0.3 c 0,-0.7 -0.05,-1.501 -0.148,-2.45 -0.051,-0.949 -0.199,-1.949 -0.352,-2.996 -0.148,-1.051 -0.3,-2.199 -0.5,-3.352 -0.148,-1.148 -0.347,-2.296 -0.597,-3.445 -0.199,-1.152 -0.403,-2.25 -0.653,-3.351 -0.25,-1.047 -0.449,-2.047 -0.699,-2.996 z m -2.347,5.547 c 0.101,0.55 0.199,1.148 0.3,1.796 0.098,0.602 0.2,1.204 0.25,1.75 0.098,0.551 0.149,0.949 0.2,1.301 h -4.649 c 0.25,-0.449 0.5,-0.949 0.75,-1.5 0.301,-0.551 0.598,-1.148 0.899,-1.75 0.351,-0.597 0.648,-1.148 0.949,-1.699 0.301,-0.551 0.551,-1.047 0.801,-1.398 h 0.199 c 0.101,0.398 0.199,0.898 0.301,1.5 z" + fill-rule="evenodd" + id="path401" /><path + fill="#000000" + d="m 357.641,135.957 0.547,-3.398 h -12.793 l -0.551,3.398 h 4.547 l -2.649,15.344 h 3.649 l 2.699,-15.344 z" + id="path403" /><path + fill="#000000" + d="m 297.465,132.309 c -1.051,0 -2.102,0.047 -3.153,0.148 -1.046,0.149 -2.046,0.301 -2.996,0.551 l -3.148,17.844 c 0.949,0.246 2.047,0.398 3.246,0.547 1.152,0.152 2.25,0.199 3.301,0.199 1.547,0 2.949,-0.25 4.297,-0.746 1.351,-0.551 2.55,-1.25 3.55,-2.2 0.997,-0.953 1.797,-2.101 2.399,-3.449 0.547,-1.351 0.848,-2.898 0.848,-4.597 0,-1.352 -0.2,-2.5 -0.598,-3.551 -0.449,-1.051 -1,-1.899 -1.75,-2.598 -0.75,-0.699 -1.649,-1.25 -2.649,-1.601 -1.05,-0.348 -2.148,-0.547 -3.347,-0.547 z m -0.801,3.398 c 0.75,0 1.449,0.098 2.098,0.25 0.652,0.149 1.199,0.449 1.648,0.848 0.5,0.398 0.902,0.898 1.152,1.551 0.25,0.597 0.399,1.347 0.399,2.296 0,1.2 -0.149,2.25 -0.5,3.2 -0.301,0.949 -0.75,1.75 -1.348,2.398 -0.601,0.652 -1.301,1.102 -2.152,1.449 -0.848,0.352 -1.746,0.5 -2.797,0.5 -0.449,0 -0.898,0 -1.449,-0.047 -0.551,-0.05 -1.051,-0.101 -1.399,-0.152 l 2.149,-12.094 c 0.301,-0.05 0.699,-0.101 1.148,-0.152 0.449,-0.047 0.801,-0.047 1.051,-0.047 z" + fill-rule="evenodd" + id="path405" /><path + fill="#000000" + d="m 185.809,62.586 c 1.148,1.75 2.046,3.598 2.597,5.496 0.5,1.8985 0.75,3.6992 0.75,5.3477 0,0.8515 -0.051,1.8984 -0.199,3.0508 -0.102,1.1484 -0.25,2.0468 -0.402,2.6992 l -7.946,42.3323 h 14.395 l 8.445,-45.6839 c 2.051,-1.5469 4.25,-2.6992 6.598,-3.4961 2.398,-0.8515 4.5,-1.3008 6.25,-1.3008 1.898,0 3.496,0.5508 4.797,1.6485 1.25,1.0508 1.847,2.6015 1.847,4.75 0,0.5976 -0.097,1.5 -0.296,2.75 -0.204,1.1484 -0.352,2.1992 -0.5,3.0976 l -3.602,16.8907 c -0.25,1.301 -0.5,2.652 -0.75,4.051 -0.246,1.449 -0.348,2.699 -0.348,3.746 0,4.051 1.098,7.449 3.348,10.148 2.148,2.699 6,4.297 11.547,4.746 l 6.348,-12.843 c -2.149,-0.348 -3.7,-1.149 -4.649,-2.399 -1,-1.199 -1.5,-2.898 -1.5,-5.047 0,-0.5 0.051,-1.101 0.149,-1.75 0.05,-0.652 0.152,-1.1989 0.203,-1.6012 l 3.648,-17.1915 c 0.297,-1.4492 0.547,-2.8984 0.746,-4.3476 0.203,-1.3985 0.301,-2.8008 0.301,-4.1485 0,-4.9492 -1.449,-8.9452 -4.348,-11.8942 -2.949,-2.949 -7.047,-4.449 -12.293,-4.449 -3.05,0 -5.949,0.5 -8.797,1.5 -2.8,0.949 -6.199,2.546 -10.148,4.898 -0.148,-0.949 -0.5,-2.102 -1,-3.398 -0.547,-1.25 -1.148,-2.352 -1.797,-3.352 z" + id="path407" /><path + fill="#000000" + d="m 276.82,31.547 h -14.144 l -10.793,58.4764 c -0.453,1.9493 -0.801,4 -1.051,6.1485 -0.25,2.0976 -0.398,4.0471 -0.398,5.8471 0,5.797 1.097,10.547 3.347,14.243 2.25,3.699 6.047,5.898 11.395,6.597 l 6.496,-13.293 c -1.047,-0.5 -1.949,-1.05 -2.797,-1.648 -0.852,-0.551 -1.551,-1.301 -2.102,-2.149 -0.597,-0.851 -1.046,-1.851 -1.296,-3.05 -0.25,-1.2 -0.403,-2.7 -0.403,-4.4495 0,-0.8476 0.051,-1.7968 0.153,-2.7968 0.148,-1.0508 0.3,-2.1016 0.449,-3.1993 z" + id="path409" /><path + fill="#000000" + d="m 246.434,132.559 h -3.649 l -2.398,13.691 c -0.5,0.551 -1.102,1 -1.852,1.402 -0.75,0.348 -1.547,0.547 -2.449,0.547 -0.898,0 -1.598,-0.199 -2.098,-0.598 -0.55,-0.449 -0.8,-1.148 -0.8,-2.199 0,-0.199 0.05,-0.5 0.101,-0.898 0.051,-0.352 0.051,-0.703 0.098,-1 l 2,-10.945 h -3.699 l -1.95,10.894 c -0.047,0.449 -0.097,0.899 -0.148,1.348 -0.051,0.449 -0.051,0.801 -0.051,1.152 0,1 0.152,1.848 0.449,2.598 0.301,0.75 0.703,1.301 1.203,1.75 0.547,0.449 1.149,0.797 1.797,1 0.7,0.199 1.399,0.297 2.149,0.297 1.851,0 3.5,-0.547 5,-1.7 0,0.25 0,0.551 0.051,0.852 0,0.25 0,0.5 0.046,0.75 l 3.649,-0.25 c -0.047,-0.25 -0.047,-0.5 -0.047,-0.801 -0.051,-0.25 -0.051,-0.551 -0.051,-0.898 0,-0.602 0.051,-1.25 0.098,-1.899 0.051,-0.699 0.101,-1.351 0.25,-1.949 z" + id="path411" /><path + fill="#000000" + d="m 276.621,132.559 h -3.547 l -1.902,11.043 c -0.047,0.152 -0.098,0.402 -0.098,0.75 0,0.351 0,0.601 0,0.851 h -0.152 l -6.395,-12.644 h -3.351 l -3.348,18.742 h 3.598 l 2,-11.297 c 0.051,-0.148 0.051,-0.398 0.051,-0.648 0,-0.25 0,-0.551 0,-0.852 h 0.148 l 6.551,12.945 3.195,-0.3 z" + id="path413" /><path + fill="#000000" + d="m 214.797,134.457 c -0.699,-0.699 -1.5,-1.25 -2.449,-1.601 -0.95,-0.348 -2,-0.547 -3.098,-0.547 -1.449,0 -2.801,0.297 -4.051,0.847 -1.25,0.551 -2.347,1.352 -3.297,2.348 -0.949,1 -1.699,2.152 -2.25,3.5 -0.55,1.352 -0.851,2.801 -0.851,4.398 0,1.25 0.203,2.348 0.601,3.399 0.352,1 0.899,1.851 1.598,2.551 0.652,0.749 1.5,1.296 2.449,1.699 0.949,0.348 2,0.547 3.149,0.547 1.402,0 2.75,-0.297 4,-0.848 1.25,-0.551 2.347,-1.352 3.297,-2.348 0.953,-0.953 1.703,-2.152 2.25,-3.5 0.55,-1.351 0.851,-2.847 0.851,-4.449 0,-1.25 -0.199,-2.398 -0.601,-3.398 -0.399,-1 -0.95,-1.848 -1.598,-2.598 z m -10.496,3.547 c 0.551,-0.699 1.199,-1.25 1.949,-1.699 0.75,-0.449 1.551,-0.649 2.5,-0.649 1.449,0 2.496,0.45 3.246,1.348 0.75,0.852 1.152,2.102 1.152,3.648 0,0.95 -0.152,1.903 -0.453,2.852 -0.25,0.898 -0.648,1.699 -1.199,2.398 -0.547,0.7 -1.199,1.25 -1.949,1.699 -0.75,0.399 -1.598,0.598 -2.496,0.598 -1.449,0 -2.5,-0.449 -3.25,-1.297 -0.75,-0.902 -1.149,-2.101 -1.149,-3.648 0,-0.949 0.149,-1.902 0.45,-2.852 0.3,-0.898 0.699,-1.699 1.199,-2.398 z" + fill-rule="evenodd" + id="path415" /><path + fill="#000000" + d="m 188.258,132.559 h -10.297 l -3.348,18.742 h 3.699 l 1.247,-7.149 h 6.75 l 0.597,-3.398 h -6.746 l 0.848,-4.797 h 6.648 z" + id="path417" /><path + fill="#98bf00" + d="M 127.082,44.891 C 128.43,33.945 125.684,24.102 118.883,15.402 112.086,6.707 103.191,1.66 92.2461,0.309 81.3008,-1.039 71.4531,1.711 62.7578,8.508 c -8.0469,6.246 -12.9453,14.293 -14.6953,24.14 -0.1484,0.848 -0.3008,1.649 -0.3984,2.497 -0.1016,0.851 -0.1524,1.652 -0.1993,2.449 -0.3515,4.597 0.0977,8.996 1.2969,13.195 1.3516,4.899 3.6992,9.496 7.0977,13.844 3.3984,4.3475 7.2969,7.7498 11.7461,10.2967 3.7461,2.1484 7.8945,3.5976 12.4453,4.3984 0.8008,0.1485 1.5976,0.25 2.4492,0.3985 0.4492,0.0507 0.8984,0.1015 1.3477,0.1523 1.1015,-4.4492 2.8007,-8.5977 5.1484,-12.3479 -1.5508,0.051 -3.1484,0 -4.7461,-0.148 -0.1016,-0.051 -0.1523,-0.051 -0.2031,-0.051 -1.8477,-0.25 -3.6485,-0.598 -5.2969,-1.148 -5.1484,-1.649 -9.4961,-4.7 -13.043,-9.246 -3.5508,-4.547 -5.4492,-9.497 -5.8008,-14.895 -0.0976,-1.75 -0.0468,-3.5 0.2032,-5.348 0,-0.05 0,-0.148 0,-0.199 0.9492,-7.449 4.3984,-13.496 10.3437,-18.144 6,-4.649 12.7461,-6.547 20.293,-5.598 7.5469,0.902 13.6449,4.348 18.2929,10.348 4.649,5.996 6.547,12.742 5.649,20.293 -0.25,1.699 -0.551,3.296 -1,4.847 4.199,-1.351 8.593,-2.051 13.195,-2 0.047,-0.449 0.148,-0.898 0.199,-1.351 z" + id="path419" /><path + fill="#98bf00" + d="m 132.328,51.488 c -0.848,-0.097 -1.648,-0.199 -2.5,-0.25 -4.598,-0.297 -8.996,0.153 -13.191,1.301 -4.899,1.348 -9.496,3.75 -13.848,7.149 -4.3476,3.347 -7.746,7.246 -10.2421,11.6948 -2.1524,3.7461 -3.6016,7.8945 -4.4492,12.4453 4.3476,0.7461 8.3476,1.9961 12.0433,3.8477 0.25,-1.8008 0.601,-3.5 1.101,-5.0977 1.649,-5.1484 4.699,-9.4961 9.246,-13.0469 4.547,-3.5472 9.496,-5.4962 14.946,-5.8472 1.746,-0.098 3.496,-0.051 5.347,0.199 0.047,0 0.098,0 0.149,0 7.445,0.953 13.496,4.449 18.144,10.3982 4.696,5.9454 6.594,12.6954 5.645,20.2422 -0.949,7.5466 -4.399,13.6446 -10.344,18.3396 -5.949,4.649 -12.695,6.5 -20.145,5.598 0.852,4.051 1.102,8.297 0.801,12.695 9.946,0.653 18.942,-2.199 26.989,-8.445 8.699,-6.797 13.746,-15.695 15.093,-26.6407 1.352,-10.9453 -1.398,-20.7891 -8.195,-29.4883 -6.297,-8.047 -14.344,-12.945 -24.141,-14.691 -0.847,-0.153 -1.648,-0.301 -2.449,-0.403 z" + id="path421" /><path + fill="#000000" + d="m 128.93,78.7266 c -3.45,-0.3985 -6.496,0.4531 -9.246,2.6015 -2.75,2.1485 -4.297,4.8985 -4.7,8.2969 -0.449,3.4492 0.403,6.4961 2.551,9.2461 2.149,2.7499 4.899,4.2969 8.348,4.6989 3.398,0.449 6.445,-0.402 9.195,-2.551 2.75,-2.1479 4.297,-4.8979 4.746,-8.3471 0.403,-3.3985 -0.449,-6.4453 -2.597,-9.1953 -2.149,-2.75 -4.899,-4.2969 -8.297,-4.75 z" + id="path423" /><path + fill="#98bf00" + d="M 12.8281,73.6289 C 13.7773,66.082 17.2266,59.938 23.2227,55.289 29.1719,50.641 35.8672,48.742 43.3164,49.691 42.4648,45.641 42.1641,41.395 42.5156,36.996 32.5703,36.344 23.5742,39.145 15.5273,45.441 6.77734,52.238 1.78125,61.137 0.433594,72.082 -0.917969,83.0273 1.78125,92.8242 8.62891,101.57 c 6.24609,8.047 14.29299,12.946 24.14059,14.692 0.8008,0.152 1.5977,0.25 2.4493,0.402 0.8476,0.098 1.6484,0.199 2.5,0.25 4.5976,0.301 8.996,-0.152 13.1914,-1.301 4.8476,-1.398 9.496,-3.797 13.8476,-7.148 4.2969,-3.399 7.6953,-7.297 10.2461,-11.6955 2.1484,-3.7461 3.5977,-7.8945 4.4453,-12.4414 -4.3476,-0.75 -8.3437,-2.0508 -12.043,-3.8515 -0.2499,1.75 -0.6015,3.4492 -1.1015,5.0976 -1.6485,5.1485 -4.6992,9.4961 -9.2461,13.0469 -4.5469,3.5469 -9.4961,5.4959 -14.8945,5.8479 -1.75,0.097 -3.5469,0.05 -5.3985,-0.2 -0.0468,0 -0.0976,0 -0.1484,-0.05 C 29.1719,103.269 23.1211,99.8203 18.4727,93.8711 13.7773,87.875 11.8789,81.1289 12.8281,73.6289 Z" + id="path425" /><path + fill="#000000" + d="m 32.4688,67.133 c -2.75,2.0975 -4.2969,4.8982 -4.7461,8.3475 -0.4024,3.3476 0.4492,6.3984 2.5976,9.1445 2.0977,2.75 4.8477,4.3477 8.2969,4.8008 3.4492,0.3476 6.4961,-0.5 9.2461,-2.6016 2.6992,-2.1484 4.2461,-4.9453 4.6992,-8.2969 0.4492,-3.4492 -0.4023,-6.5468 -2.5508,-9.2461 -2.1484,-2.7462 -4.8984,-4.2972 -8.3476,-4.6952 -3.4493,-0.453 -6.4961,0.398 -9.1953,2.547 z" + id="path427" /><path + fill="#000000" + d="m 97.293,32.348 c -2.1485,-2.75 -4.9492,-4.301 -8.3477,-4.7 -3.4492,-0.449 -6.4961,0.399 -9.1953,2.551 -2.75,2.098 -4.3477,4.899 -4.7461,8.344 -0.4531,3.398 0.4492,6.449 2.5977,9.199 2.0976,2.699 4.8476,4.297 8.2968,4.746 3.3985,0.352 6.4454,-0.5 9.1954,-2.597 2.75,-2.149 4.2968,-4.95 4.75,-8.297 0.3982,-3.449 -0.4532,-6.547 -2.5508,-9.246 z" + id="path429" /><path + fill="#98bf00" + d="m 85.0469,88.4258 c -0.4492,-0.0508 -0.8985,-0.1016 -1.3477,-0.1524 -1.1015,4.4493 -2.8008,8.5977 -5.1484,12.3476 1.5508,-0.102 3.1484,-0.051 4.7969,0.148 0.0507,0 0.1015,0 0.1523,0.051 1.8477,0.199 3.5977,0.551 5.2969,1.098 5.1484,1.652 9.4961,4.75 13.0431,9.297 3.551,4.5 5.449,9.445 5.801,14.894 0.097,1.75 0.047,3.5 -0.203,5.348 0,0.051 0,0.102 0,0.199 -0.95,7.45 -4.399,13.496 -10.3442,18.145 -6,4.648 -12.7461,6.547 -20.293,5.597 -7.5469,-0.949 -13.6445,-4.398 -18.293,-10.347 -4.6992,-5.996 -6.5976,-12.742 -5.6484,-20.289 0.2031,-1.7 0.5508,-3.301 1.0508,-4.852 -4.2461,1.352 -8.6446,2 -13.2461,2 -0.0469,0.449 -0.1485,0.902 -0.1993,1.352 -1.3476,10.945 1.3516,20.742 8.1993,29.488 6.7968,8.695 15.6914,13.742 26.6367,15.094 10.9453,1.347 20.7422,-1.399 29.4882,-8.199 8.047,-6.297 12.945,-14.344 14.695,-24.188 0.149,-0.801 0.25,-1.601 0.399,-2.449 0.051,-0.852 0.152,-1.649 0.199,-2.449 0.301,-4.649 -0.148,-9.047 -1.297,-13.196 -1.351,-4.898 -3.75,-9.496 -7.097,-13.844 -3.399,-4.3471 -7.297,-7.7963 -11.6958,-10.2963 -3.7969,-2.1485 -7.9453,-3.5977 -12.4961,-4.3985 -0.7969,-0.1484 -1.5977,-0.3008 -2.4492,-0.3984 z" + id="path431" /><path + fill="#000000" + d="m 89.9961,120.41 c -2.1484,-2.746 -4.8984,-4.297 -8.3477,-4.746 -3.4492,-0.398 -6.4961,0.449 -9.1953,2.598 -2.75,2.148 -4.2969,4.898 -4.75,8.297 -0.4492,3.449 0.4531,6.5 2.6016,9.246 2.0977,2.75 4.8476,4.301 8.2969,4.699 3.4492,0.449 6.4961,-0.398 9.2461,-2.551 2.6992,-2.148 4.2461,-4.894 4.6992,-8.344 0.3984,-3.398 -0.4531,-6.449 -2.5508,-9.199 z" + id="path433" /></g></g></g></g></svg> diff --git a/Fosdem2024/img/NGIAssure.svg b/Fosdem2024/img/NGIAssure.svg new file mode 100644 index 0000000..62b7c12 --- /dev/null +++ b/Fosdem2024/img/NGIAssure.svg @@ -0,0 +1 @@ +<svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 657.78 167.13"><defs><style>.cls-1{fill:url(#Sfumatura_senza_nome_277);}.cls-2{fill:#fff;}.cls-3{fill:#5590a1;}</style><linearGradient id="Sfumatura_senza_nome_277" x1="365.94" y1="183.94" x2="132.1" y2="411.34" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#5697ff"/><stop offset="1" stop-color="#6a0041"/></linearGradient></defs><title>Logo-NGIAssure-tag</title><path class="cls-1" d="M425,292.31l-15.21-15.13a12.77,12.77,0,0,1-3.78-9.07v-35.5a18.6,18.6,0,0,0-18.54-18.54H110.59a18.59,18.59,0,0,0-18.53,18.54V362.66a18.59,18.59,0,0,0,18.53,18.54H387.45A18.59,18.59,0,0,0,406,362.66V332a12.81,12.81,0,0,1,3.75-9L425,307.72A10.88,10.88,0,0,0,425,292.31Z" transform="translate(-92.06 -214.07)"/><path class="cls-2" d="M363.52,244.17h0a12.37,12.37,0,0,1,12.38,12.37v82.19a12.38,12.38,0,0,1-12.38,12.38h0a12.37,12.37,0,0,1-12.37-12.38V256.54A12.37,12.37,0,0,1,363.52,244.17Z" transform="translate(-92.06 -214.07)"/><path class="cls-2" d="M323.46,296H309.75A12.66,12.66,0,0,0,297,307.51a12.38,12.38,0,0,0,12.35,13.2h0a1.94,1.94,0,0,1,1.86,2.5,10.9,10.9,0,0,1-7.62,7.27,43.23,43.23,0,0,1-11.08,1.38,36.34,36.34,0,0,1-17.95-4.36,31.28,31.28,0,0,1-12.3-12.14,38,38,0,0,1,0-35.6,30.69,30.69,0,0,1,12.37-12.06,37.78,37.78,0,0,1,18.18-4.28,36.28,36.28,0,0,1,21,6.38,11,11,0,0,0,13-.28,10.86,10.86,0,0,0-.53-17.54,53.58,53.58,0,0,0-9.25-4.91,66.32,66.32,0,0,0-25.51-4.73,63.67,63.67,0,0,0-30.25,7.1,52.6,52.6,0,0,0-21,19.71,57.4,57.4,0,0,0,0,57,52.92,52.92,0,0,0,20.85,19.71,62.57,62.57,0,0,0,29.94,7.1,78.39,78.39,0,0,0,23.07-3.51l.23-.07A28.56,28.56,0,0,0,334.34,322V306.84A10.88,10.88,0,0,0,323.46,296Z" transform="translate(-92.06 -214.07)"/><path class="cls-2" d="M220.23,256.39v82.5A12.22,12.22,0,0,1,208,351.11h-2.32a12.22,12.22,0,0,1-9.45-4.47L155.6,297.15a5.08,5.08,0,0,0-9,3.22v38.52a12.22,12.22,0,0,1-12.22,12.22h0a12.22,12.22,0,0,1-12.22-12.22v-82.5a12.22,12.22,0,0,1,12.22-12.22h2.46a12.2,12.2,0,0,1,9.46,4.48l40.49,49.44a5.07,5.07,0,0,0,9-3.21V256.39A12.23,12.23,0,0,1,208,244.17h0A12.22,12.22,0,0,1,220.23,256.39Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M500.43,308H483l-3.32,8.05h-8.92l16.75-37.58h8.59l16.8,37.58h-9.12Zm-2.74-6.61-6-14.38-6,14.38Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M531.27,315.49a20.07,20.07,0,0,1-6.68-3.14l2.95-6.55a19.88,19.88,0,0,0,5.74,2.85,21.47,21.47,0,0,0,6.66,1.07,10.58,10.58,0,0,0,5.48-1.1,3.32,3.32,0,0,0,1.77-2.92,2.79,2.79,0,0,0-1.05-2.23,7.82,7.82,0,0,0-2.68-1.42c-1.09-.36-2.57-.75-4.43-1.18a60.44,60.44,0,0,1-7-2,11.4,11.4,0,0,1-4.7-3.28,8.82,8.82,0,0,1-2-6,10.46,10.46,0,0,1,1.77-5.93,11.87,11.87,0,0,1,5.34-4.22,22,22,0,0,1,8.73-1.55,29,29,0,0,1,7,.85,21.1,21.1,0,0,1,6,2.47l-2.68,6.61a21,21,0,0,0-10.42-3,9.72,9.72,0,0,0-5.39,1.19,3.58,3.58,0,0,0-1.75,3.11,3,3,0,0,0,2,2.87,30.79,30.79,0,0,0,6.14,1.85,61,61,0,0,1,7,2,11.72,11.72,0,0,1,4.7,3.22,8.64,8.64,0,0,1,2,6,10.25,10.25,0,0,1-1.8,5.88,12.15,12.15,0,0,1-5.39,4.22,22.16,22.16,0,0,1-8.75,1.55A30.59,30.59,0,0,1,531.27,315.49Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M576.26,315.49a20,20,0,0,1-6.69-3.14l3-6.55a19.88,19.88,0,0,0,5.74,2.85,21.47,21.47,0,0,0,6.66,1.07,10.57,10.57,0,0,0,5.47-1.1,3.32,3.32,0,0,0,1.77-2.92,2.81,2.81,0,0,0-1-2.23,7.87,7.87,0,0,0-2.69-1.42c-1.09-.36-2.57-.75-4.43-1.18a61.64,61.64,0,0,1-7-2,11.47,11.47,0,0,1-4.7-3.28,8.87,8.87,0,0,1-2-6,10.4,10.4,0,0,1,1.78-5.93,11.87,11.87,0,0,1,5.34-4.22,21.94,21.94,0,0,1,8.72-1.55,29,29,0,0,1,7,.85,21,21,0,0,1,6,2.47l-2.68,6.61a20.93,20.93,0,0,0-10.41-3,9.73,9.73,0,0,0-5.4,1.19,3.59,3.59,0,0,0-1.74,3.11,3,3,0,0,0,2,2.87,30.71,30.71,0,0,0,6.15,1.85,61.64,61.64,0,0,1,7,2,11.79,11.79,0,0,1,4.7,3.22,8.68,8.68,0,0,1,1.95,6,10.32,10.32,0,0,1-1.79,5.88,12.13,12.13,0,0,1-5.4,4.22,22.13,22.13,0,0,1-8.75,1.55A30.52,30.52,0,0,1,576.26,315.49Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M621.67,312.25q-4.49-4.46-4.48-12.73v-21h8.69V299.2q0,10.1,8.38,10.09a7.82,7.82,0,0,0,6.22-2.44c1.44-1.63,2.15-4.18,2.15-7.65V278.48h8.59v21q0,8.28-4.48,12.73t-12.53,4.45Q626.16,316.7,621.67,312.25Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M694.49,316.06l-7.25-10.47h-8v10.47h-8.69V278.48h16.26a21,21,0,0,1,8.67,1.66,12.42,12.42,0,0,1,7.65,12A12.22,12.22,0,0,1,695.4,304l8.43,12.08Zm-2.2-28.8a9.13,9.13,0,0,0-6-1.69h-7.09v13.09h7.09a9.07,9.07,0,0,0,6-1.71,6,6,0,0,0,2-4.84A5.93,5.93,0,0,0,692.29,287.26Z" transform="translate(-92.06 -214.07)"/><path class="cls-3" d="M749.83,309.08v7H720.74V278.48h28.4v7H729.38v8.16h17.45v6.76H729.38v8.7Z" transform="translate(-92.06 -214.07)"/></svg> diff --git a/Fosdem2024/img/bootstrapping.svg b/Fosdem2024/img/bootstrapping.svg new file mode 100644 index 0000000..2845e5a --- /dev/null +++ b/Fosdem2024/img/bootstrapping.svg @@ -0,0 +1,432 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg5" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="bootstrapping.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="2.1902631" + inkscape:cx="189.47496" + inkscape:cy="743.518" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs2"> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407615" + id="rect9558" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-9" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-2" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-0" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-1" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-5" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-4" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-7" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-9" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#54ce44;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle)" + d="m 59.410366,111.67556 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-0)" + d="m 59.410366,131.29962 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-3" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2)" + d="m 59.410366,151.25068 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-6" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-1)" + d="m 59.410366,171.33238 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-5" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#ce4444;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-4)" + d="m 59.410366,191.24251 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-65" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#fdc015;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-6)" + d="m 59.410366,211.12537 c 0,4.25534 0,4.25534 0,4.25534" + id="path15453-37" /> + <rect + style="opacity:0;fill:#00a66f;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;fill-opacity:1;stroke-opacity:1;stroke-dasharray:none" + id="rect234" + width="31.535265" + height="18.772467" + x="10.234266" + y="16.054255" /> + <rect + style="opacity:0;fill:#00a66f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1934" + width="37.217224" + height="34.280327" + x="77.470039" + y="30.808861" /> + <rect + style="opacity:1;fill:#00d65f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936" + width="50" + height="30" + x="52.961838" + y="52.490181" + ry="11.524704" /> + <rect + style="fill:#ce4444;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9" + width="60.419399" + height="15.745672" + x="28.742828" + y="137.46103" + ry="6.0488062" /> + <rect + style="fill:#ce4444;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-8" + width="60.419399" + height="15.745672" + x="28.742828" + y="177.30629" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4" + width="60.419399" + height="15.745672" + x="28.742828" + y="97.615768" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7" + width="60.419399" + height="15.745672" + x="28.742828" + y="117.5384" + ry="6.0488062" /> + <rect + style="fill:#54ce44;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-0" + width="60.419399" + height="15.745672" + x="28.742828" + y="197.22891" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4" + width="60.419399" + height="15.745672" + x="28.742828" + y="157.38365" + ry="6.0488062" /> + <rect + style="fill:#fdc015;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1936-3-9-4-7-4-5" + width="60.419399" + height="15.745672" + x="28.742828" + y="217.15155" + ry="6.0488062" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-10.391428,65.33686)" + id="text9556" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-96.614113" + y="0"><tspan + x="164.57152" + y="160.20312" + id="tspan18382"><tspan + style="font-weight:bold;font-size:30.2362px;font-family:B612;-inkscape-font-specification:'B612 Bold';text-align:center;text-anchor:middle" + id="tspan18380">Stage0-Posix</tspan> </tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-10.103406,88.12896)" + id="text9556-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.2014" + y="152.60678" + id="tspan18386"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18384">Mes</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,80.566545,75.647899)" + id="text9556-6-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="198.2093" + y="152.60678" + id="tspan18390"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18388">MesLibC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-9.9834109,106.9492)" + id="text9556-6-8-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="167.97307" + y="152.60678" + id="tspan18394"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18392">TinyCC-Boot</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-10.001408,126.71343)" + id="text9556-6-8-9-0" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="208.79196" + y="152.60678" + id="tspan18398"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18396">TinyCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-9.7594064,146.82767)" + id="text9556-6-8-9-0-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="187.62656" + y="152.60678" + id="tspan18402"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18400">GCC (old)</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-10.021408,167.1679)" + id="text9556-6-8-9-0-3-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="229.95729" + y="152.60678" + id="tspan18406"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18404">GCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-9.6374076,187.16214)" + id="text9556-6-8-9-0-3-5-8" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="170.24075" + y="152.60678" + id="tspan18410"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan18408">The World™</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-9.809827,171.52189)" + id="text9556-6-8-9-0-3-5-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-2-2-7-9);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0" /> + <text + xml:space="preserve" + style="font-size:10.5833px;line-height:1.25;font-family:Armata;-inkscape-font-specification:Armata;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;stroke-width:0.264583" + x="48.232025" + y="187.25246" + id="text10512"><tspan + sodipodi:role="line" + id="tspan10510" + style="stroke-width:0.264583"></tspan></text> + </g> +</svg> diff --git a/Fosdem2024/img/nlnet.svg b/Fosdem2024/img/nlnet.svg new file mode 100644 index 0000000..373c8d8 --- /dev/null +++ b/Fosdem2024/img/nlnet.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<!-- Created using Karbon14, part of koffice: http://www.koffice.org/karbon --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="449px" height="168px"> + <defs> + </defs> + <g id="Layer"> + </g> + <g id="Layer"> + <path fill="#98bf00" d="M446.602 73.8789L449.102 60.234L436.207 60.234L439.957 40.145L424.512 46.191L422.012 60.234L412.617 60.234L410.117 73.8789L419.363 73.8789L416.215 91.1719C416.066 92.125 415.816 93.5234 415.566 95.3203C415.316 97.1211 415.164 98.7188 415.164 100.07C415.215 106.316 416.715 111.465 419.664 115.516C422.613 119.66 427.41 122.109 434.109 122.859L440.555 109.566C437.105 109.117 434.508 107.766 432.66 105.469C430.809 103.117 429.91 100.168 429.91 96.5703C429.91 95.8711 430.012 94.8711 430.16 93.5234C430.309 92.1719 430.461 91.0742 430.609 90.2227L433.609 73.8789L446.602 73.8789L446.602 73.8789Z" /> + <path fill="#98bf00" d="M310.707 72.332C313.105 71.4805 315.207 71.0312 316.957 71.0312C318.855 71.0312 320.453 71.582 321.754 72.6797C323.004 73.7305 323.602 75.2812 323.602 77.4297C323.602 78.0273 323.504 78.9297 323.301 80.1797C323.102 81.3281 322.953 82.3789 322.805 83.2773L319.203 100.168C318.953 101.469 318.703 102.82 318.453 104.219C318.203 105.668 318.105 106.918 318.105 107.965C318.105 112.016 319.203 115.414 321.453 118.113C323.602 120.812 327.449 122.41 333 122.859L339.348 110.016C337.195 109.668 335.648 108.867 334.699 107.617C333.699 106.418 333.199 104.719 333.199 102.57C333.199 102.07 333.25 101.469 333.348 100.82C333.398 100.168 333.5 99.6211 333.547 99.2188L337.195 82.0273C337.496 80.5781 337.746 79.1289 337.945 77.6797C338.148 76.2812 338.246 74.8789 338.246 73.5312C338.246 68.582 336.797 64.586 333.898 61.637C330.949 58.688 326.852 57.188 321.602 57.188C318.555 57.188 315.656 57.688 312.809 58.688C310.008 59.637 306.609 61.234 302.66 63.586C302.512 62.637 302.16 61.484 301.66 60.188C301.113 58.938 300.512 57.836 299.863 56.836L286.469 62.586C287.617 64.336 288.516 66.184 289.066 68.082C289.566 69.9805 289.816 71.7812 289.816 73.4297C289.816 74.2812 289.766 75.3281 289.617 76.4805C289.516 77.6289 289.367 78.5273 289.215 79.1797L281.27 121.512L295.664 121.512L304.109 75.8281C306.16 74.2812 308.359 73.1289 310.707 72.332L310.707 72.332Z" /> + <path fill="#98bf00" d="M350.742 80.0781C349.191 84.6758 348.441 89.5742 348.441 94.7227C348.441 99.2188 349.043 103.219 350.191 106.719C351.34 110.215 352.992 113.164 355.09 115.516C357.141 117.914 359.688 119.711 362.637 120.961C365.586 122.211 368.883 122.859 372.484 122.859C376.832 122.859 381.129 122.062 385.43 120.461C389.777 118.863 393.574 116.363 396.824 113.016L391.426 100.519C388.926 103.32 386.176 105.418 383.129 106.867C380.078 108.316 377.031 109.016 374.031 109.016C370.535 109.016 367.785 107.918 365.785 105.719C363.836 103.469 362.836 100.668 362.836 97.3711L362.836 96.4219C362.836 96.0234 362.887 95.6211 362.988 95.2227C365.637 94.8711 368.633 94.4219 371.984 93.8242C375.332 93.2227 378.73 92.5234 382.18 91.7227C385.629 90.875 388.977 89.9258 392.273 88.9258C395.523 87.9258 398.422 86.875 400.871 85.8242L400.871 80.0781C400.871 76.5312 400.32 73.332 399.223 70.4805C398.074 67.734 396.574 65.332 394.625 63.285C392.676 61.285 390.324 59.785 387.676 58.785C385.078 57.738 382.23 57.188 379.18 57.188C374.73 57.188 370.582 58.188 366.836 60.137C363.035 62.086 359.789 64.785 357.141 68.2344C354.391 71.6328 352.293 75.5781 350.742 80.0781L350.742 80.0781ZM372.383 69.9805C373.934 69.1328 375.684 68.7344 377.633 68.7344C380.281 68.7344 382.48 69.582 384.227 71.332C385.977 73.0312 386.879 75.5781 386.879 79.0273C385.43 79.4766 383.727 80.0273 381.73 80.5781C379.68 81.0781 377.633 81.5781 375.531 82.0273C373.383 82.4766 371.332 82.9258 369.285 83.3281C367.234 83.6758 365.484 83.9766 363.984 84.2266C364.234 82.1289 364.688 80.1289 365.387 78.2773C366.137 76.4297 367.086 74.7812 368.234 73.3789C369.484 71.9805 370.832 70.832 372.383 69.9805L372.383 69.9805Z" fill-rule="evenodd" /> + <path fill="#000000" d="M404.172 140.453C404.172 139.203 403.969 138.055 403.57 137.055C403.172 136.055 402.621 135.207 401.973 134.457C401.27 133.758 400.473 133.207 399.523 132.856C398.574 132.508 397.523 132.309 396.422 132.309C394.973 132.309 393.625 132.606 392.375 133.156C391.125 133.707 390.027 134.508 389.078 135.504C388.125 136.504 387.379 137.656 386.828 139.004C386.277 140.356 385.977 141.805 385.977 143.402C385.977 144.652 386.176 145.75 386.578 146.801C386.926 147.801 387.477 148.652 388.176 149.352C388.828 150.101 389.676 150.648 390.625 151.051C391.574 151.399 392.625 151.598 393.773 151.598C395.176 151.598 396.523 151.301 397.773 150.75C399.023 150.199 400.121 149.398 401.07 148.402C402.02 147.449 402.77 146.25 403.32 144.902C403.871 143.551 404.172 142.055 404.172 140.453L404.172 140.453ZM390.277 140.402C390.574 139.504 390.977 138.703 391.477 138.004C392.023 137.305 392.676 136.754 393.426 136.305C394.176 135.856 394.973 135.656 395.922 135.656C397.371 135.656 398.422 136.106 399.172 137.004C399.922 137.856 400.32 139.106 400.32 140.652C400.32 141.602 400.172 142.555 399.871 143.504C399.621 144.402 399.223 145.203 398.672 145.902C398.121 146.602 397.473 147.152 396.723 147.601C395.973 148 395.125 148.199 394.223 148.199C392.773 148.199 391.727 147.75 390.977 146.902C390.227 146 389.824 144.801 389.824 143.254C389.824 142.305 389.977 141.352 390.277 140.402L390.277 140.402Z" fill-rule="evenodd" /> + <path fill="#000000" d="M434.559 132.559L431.008 132.559L429.109 143.602C429.059 143.754 429.012 144.004 429.012 144.352C429.012 144.703 429.012 144.953 429.012 145.203L428.859 145.203L422.465 132.559L419.113 132.559L415.766 151.301L419.363 151.301L421.363 140.004C421.414 139.856 421.414 139.606 421.414 139.356C421.414 139.106 421.414 138.805 421.414 138.504L421.563 138.504L428.109 151.449L431.309 151.149L434.559 132.559L434.559 132.559Z" /> + <path fill="#000000" d="M374.383 132.559L370.734 132.559L367.387 151.301L371.082 151.301L374.383 132.559L374.383 132.559Z" /> + <path fill="#000000" d="M328.949 132.559L324.703 132.559C323.902 133.906 323.051 135.457 322.102 137.106C321.152 138.754 320.254 140.453 319.355 142.152C318.453 143.852 317.656 145.5 316.906 147.102C316.156 148.699 315.555 150.101 315.105 151.301L318.953 151.301C319.105 150.949 319.254 150.5 319.453 150.051C319.652 149.602 319.855 149.102 320.105 148.652C320.305 148.199 320.504 147.75 320.703 147.301C320.902 146.852 321.102 146.453 321.254 146.102L327.75 146.102C327.801 146.551 327.801 147 327.852 147.5L328 148.949C328.051 149.398 328.102 149.852 328.152 150.301C328.199 150.75 328.199 151.098 328.199 151.449L331.898 151.149C331.898 150.449 331.848 149.648 331.75 148.699C331.699 147.75 331.551 146.75 331.398 145.703C331.25 144.652 331.098 143.504 330.898 142.351C330.75 141.203 330.551 140.055 330.301 138.906C330.102 137.754 329.898 136.656 329.648 135.555C329.398 134.508 329.199 133.508 328.949 132.559L328.949 132.559ZM326.602 138.106C326.703 138.656 326.801 139.254 326.902 139.902C327 140.504 327.102 141.106 327.152 141.652C327.25 142.203 327.301 142.601 327.352 142.953L322.703 142.953C322.953 142.504 323.203 142.004 323.453 141.453C323.754 140.902 324.051 140.305 324.352 139.703C324.703 139.106 325 138.555 325.301 138.004C325.602 137.453 325.852 136.957 326.102 136.606L326.301 136.606C326.402 137.004 326.5 137.504 326.602 138.106L326.602 138.106Z" fill-rule="evenodd" /> + <path fill="#000000" d="M357.641 135.957L358.188 132.559L345.395 132.559L344.844 135.957L349.391 135.957L346.742 151.301L350.391 151.301L353.09 135.957L357.641 135.957L357.641 135.957Z" /> + <path fill="#000000" d="M297.465 132.309C296.414 132.309 295.363 132.356 294.312 132.457C293.266 132.606 292.266 132.758 291.316 133.008L288.168 150.852C289.117 151.098 290.215 151.25 291.414 151.399C292.566 151.551 293.664 151.598 294.715 151.598C296.262 151.598 297.664 151.348 299.012 150.852C300.363 150.301 301.562 149.602 302.562 148.652C303.559 147.699 304.359 146.551 304.961 145.203C305.508 143.852 305.809 142.305 305.809 140.606C305.809 139.254 305.609 138.106 305.211 137.055C304.762 136.004 304.211 135.156 303.461 134.457C302.711 133.758 301.812 133.207 300.812 132.856C299.762 132.508 298.664 132.309 297.465 132.309L297.465 132.309ZM296.664 135.707C297.414 135.707 298.113 135.805 298.762 135.957C299.414 136.106 299.961 136.406 300.41 136.805C300.91 137.203 301.312 137.703 301.562 138.356C301.812 138.953 301.961 139.703 301.961 140.652C301.961 141.852 301.812 142.902 301.461 143.852C301.16 144.801 300.711 145.602 300.113 146.25C299.512 146.902 298.812 147.352 297.961 147.699C297.113 148.051 296.215 148.199 295.164 148.199C294.715 148.199 294.266 148.199 293.715 148.152C293.164 148.102 292.664 148.051 292.316 148L294.465 135.906C294.766 135.856 295.164 135.805 295.613 135.754C296.062 135.707 296.414 135.707 296.664 135.707L296.664 135.707Z" fill-rule="evenodd" /> + <path fill="#000000" d="M185.809 62.586C186.957 64.336 187.855 66.184 188.406 68.082C188.906 69.9805 189.156 71.7812 189.156 73.4297C189.156 74.2812 189.105 75.3281 188.957 76.4805C188.855 77.6289 188.707 78.5273 188.555 79.1797L180.609 121.512L195.004 121.512L203.449 75.8281C205.5 74.2812 207.699 73.1289 210.047 72.332C212.445 71.4805 214.547 71.0312 216.297 71.0312C218.195 71.0312 219.793 71.582 221.094 72.6797C222.344 73.7305 222.941 75.2812 222.941 77.4297C222.941 78.0273 222.844 78.9297 222.645 80.1797C222.441 81.3281 222.293 82.3789 222.145 83.2773L218.543 100.168C218.293 101.469 218.043 102.82 217.793 104.219C217.547 105.668 217.445 106.918 217.445 107.965C217.445 112.016 218.543 115.414 220.793 118.113C222.941 120.812 226.793 122.41 232.34 122.859L238.688 110.016C236.539 109.668 234.988 108.867 234.039 107.617C233.039 106.418 232.539 104.719 232.539 102.57C232.539 102.07 232.59 101.469 232.688 100.82C232.738 100.168 232.84 99.6211 232.891 99.2188L236.539 82.0273C236.836 80.5781 237.086 79.1289 237.285 77.6797C237.488 76.2812 237.586 74.8789 237.586 73.5312C237.586 68.582 236.137 64.586 233.238 61.637C230.289 58.688 226.191 57.188 220.945 57.188C217.895 57.188 214.996 57.688 212.148 58.688C209.348 59.637 205.949 61.234 202 63.586C201.852 62.637 201.5 61.484 201 60.188C200.453 58.938 199.852 57.836 199.203 56.836L185.809 62.586L185.809 62.586Z" /> + <path fill="#000000" d="M276.82 31.547L262.676 31.547L251.883 90.0234C251.43 91.9727 251.082 94.0234 250.832 96.1719C250.582 98.2695 250.434 100.219 250.434 102.019C250.434 107.816 251.531 112.566 253.781 116.262C256.031 119.961 259.828 122.16 265.176 122.859L271.672 109.566C270.625 109.066 269.723 108.516 268.875 107.918C268.023 107.367 267.324 106.617 266.773 105.769C266.176 104.918 265.727 103.918 265.477 102.719C265.227 101.519 265.074 100.019 265.074 98.2695C265.074 97.4219 265.125 96.4727 265.227 95.4727C265.375 94.4219 265.527 93.3711 265.676 92.2734L276.82 31.547L276.82 31.547Z" /> + <path fill="#000000" d="M246.434 132.559L242.785 132.559L240.387 146.25C239.887 146.801 239.285 147.25 238.535 147.652C237.785 148 236.988 148.199 236.086 148.199C235.188 148.199 234.488 148 233.988 147.601C233.438 147.152 233.188 146.453 233.188 145.402C233.188 145.203 233.238 144.902 233.289 144.504C233.34 144.152 233.34 143.801 233.387 143.504L235.387 132.559L231.688 132.559L229.738 143.453C229.691 143.902 229.641 144.352 229.59 144.801C229.539 145.25 229.539 145.602 229.539 145.953C229.539 146.953 229.691 147.801 229.988 148.551C230.289 149.301 230.691 149.852 231.191 150.301C231.738 150.75 232.34 151.098 232.988 151.301C233.688 151.5 234.387 151.598 235.137 151.598C236.988 151.598 238.637 151.051 240.137 149.898C240.137 150.148 240.137 150.449 240.188 150.75C240.188 151 240.188 151.25 240.234 151.5L243.883 151.25C243.836 151 243.836 150.75 243.836 150.449C243.785 150.199 243.785 149.898 243.785 149.551C243.785 148.949 243.836 148.301 243.883 147.652C243.934 146.953 243.984 146.301 244.133 145.703L246.434 132.559L246.434 132.559Z" /> + <path fill="#000000" d="M276.621 132.559L273.074 132.559L271.172 143.602C271.125 143.754 271.074 144.004 271.074 144.352C271.074 144.703 271.074 144.953 271.074 145.203L270.922 145.203L264.527 132.559L261.176 132.559L257.828 151.301L261.426 151.301L263.426 140.004C263.477 139.856 263.477 139.606 263.477 139.356C263.477 139.106 263.477 138.805 263.477 138.504L263.625 138.504L270.176 151.449L273.371 151.149L276.621 132.559L276.621 132.559Z" /> + <path fill="#000000" d="M214.797 134.457C214.098 133.758 213.297 133.207 212.348 132.856C211.398 132.508 210.348 132.309 209.25 132.309C207.801 132.309 206.449 132.606 205.199 133.156C203.949 133.707 202.852 134.508 201.902 135.504C200.953 136.504 200.203 137.656 199.652 139.004C199.102 140.356 198.801 141.805 198.801 143.402C198.801 144.652 199.004 145.75 199.402 146.801C199.754 147.801 200.301 148.652 201 149.352C201.652 150.101 202.5 150.648 203.449 151.051C204.398 151.399 205.449 151.598 206.598 151.598C208 151.598 209.348 151.301 210.598 150.75C211.848 150.199 212.945 149.398 213.895 148.402C214.848 147.449 215.598 146.25 216.145 144.902C216.695 143.551 216.996 142.055 216.996 140.453C216.996 139.203 216.797 138.055 216.395 137.055C215.996 136.055 215.445 135.207 214.797 134.457L214.797 134.457ZM204.301 138.004C204.852 137.305 205.5 136.754 206.25 136.305C207 135.856 207.801 135.656 208.75 135.656C210.199 135.656 211.246 136.106 211.996 137.004C212.746 137.856 213.148 139.106 213.148 140.652C213.148 141.602 212.996 142.555 212.695 143.504C212.445 144.402 212.047 145.203 211.496 145.902C210.949 146.602 210.297 147.152 209.547 147.601C208.797 148 207.949 148.199 207.051 148.199C205.602 148.199 204.551 147.75 203.801 146.902C203.051 146 202.652 144.801 202.652 143.254C202.652 142.305 202.801 141.352 203.102 140.402C203.402 139.504 203.801 138.703 204.301 138.004L204.301 138.004Z" fill-rule="evenodd" /> + <path fill="#000000" d="M188.258 132.559L177.961 132.559L174.613 151.301L178.312 151.301L179.559 144.152L186.309 144.152L186.906 140.754L180.16 140.754L181.008 135.957L187.656 135.957L188.258 132.559L188.258 132.559Z" /> + <path fill="#98bf00" d="M127.082 44.891C128.43 33.945 125.684 24.102 118.883 15.402C112.086 6.707 103.191 1.66 92.2461 0.309C81.3008 -1.039 71.4531 1.711 62.7578 8.508C54.7109 14.754 49.8125 22.801 48.0625 32.648C47.9141 33.496 47.7617 34.297 47.6641 35.145C47.5625 35.996 47.5117 36.797 47.4648 37.594C47.1133 42.191 47.5625 46.59 48.7617 50.789C50.1133 55.688 52.4609 60.285 55.8594 64.633C59.2578 68.9805 63.1563 72.3828 67.6055 74.9297C71.3516 77.0781 75.5 78.5273 80.0508 79.3281C80.8516 79.4766 81.6484 79.5781 82.5 79.7266C82.9492 79.7773 83.3984 79.8281 83.8477 79.8789C84.9492 75.4297 86.6484 71.2812 88.9961 67.531C87.4453 67.582 85.8477 67.531 84.25 67.383C84.1484 67.332 84.0977 67.332 84.0469 67.332C82.1992 67.082 80.3984 66.734 78.75 66.184C73.6016 64.535 69.2539 61.484 65.707 56.938C62.1562 52.391 60.2578 47.441 59.9062 42.043C59.8086 40.293 59.8594 38.543 60.1094 36.695C60.1094 36.645 60.1094 36.547 60.1094 36.496C61.0586 29.047 64.5078 23 70.4531 18.352C76.4531 13.703 83.1992 11.805 90.7461 12.754C98.293 13.656 104.391 17.102 109.039 23.102C113.688 29.098 115.586 35.844 114.688 43.395C114.438 45.094 114.137 46.691 113.688 48.242C117.887 46.891 122.281 46.191 126.883 46.242C126.93 45.793 127.031 45.344 127.082 44.891L127.082 44.891Z" /> + <path fill="#98bf00" d="M132.328 51.488C131.48 51.391 130.68 51.289 129.828 51.238C125.23 50.941 120.832 51.391 116.637 52.539C111.738 53.887 107.141 56.289 102.789 59.688C98.4414 63.035 95.043 66.934 92.5469 71.3828C90.3945 75.1289 88.9453 79.2773 88.0977 83.8281C92.4453 84.5742 96.4453 85.8242 100.141 87.6758C100.391 85.875 100.742 84.1758 101.242 82.5781C102.891 77.4297 105.941 73.082 110.488 69.5312C115.035 65.984 119.984 64.035 125.434 63.684C127.18 63.586 128.93 63.633 130.781 63.883C130.828 63.883 130.879 63.883 130.93 63.883C138.375 64.836 144.426 68.332 149.074 74.2812C153.77 80.2266 155.668 86.9766 154.719 94.5234C153.77 102.07 150.32 108.168 144.375 112.863C138.426 117.512 131.68 119.363 124.23 118.461C125.082 122.512 125.332 126.758 125.031 131.156C134.977 131.809 143.973 128.957 152.02 122.711C160.719 115.914 165.766 107.016 167.113 96.0703C168.465 85.125 165.715 75.2812 158.918 66.582C152.621 58.535 144.574 53.637 134.777 51.891C133.93 51.738 133.129 51.59 132.328 51.488L132.328 51.488Z" /> + <path fill="#000000" d="M128.93 78.7266C125.48 78.3281 122.434 79.1797 119.684 81.3281C116.934 83.4766 115.387 86.2266 114.984 89.625C114.535 93.0742 115.387 96.1211 117.535 98.8711C119.684 101.621 122.434 103.168 125.883 103.57C129.281 104.019 132.328 103.168 135.078 101.019C137.828 98.8711 139.375 96.1211 139.824 92.6719C140.227 89.2734 139.375 86.2266 137.227 83.4766C135.078 80.7266 132.328 79.1797 128.93 78.7266L128.93 78.7266Z" /> + <path fill="#98bf00" d="M12.8281 73.6289C13.7773 66.082 17.2266 59.938 23.2227 55.289C29.1719 50.641 35.8672 48.742 43.3164 49.691C42.4648 45.641 42.1641 41.395 42.5156 36.996C32.5703 36.344 23.5742 39.145 15.5273 45.441C6.77734 52.238 1.78125 61.137 0.433594 72.082C-0.917969 83.0273 1.78125 92.8242 8.62891 101.57C14.875 109.617 22.9219 114.516 32.7695 116.262C33.5703 116.414 34.3672 116.512 35.2188 116.664C36.0664 116.762 36.8672 116.863 37.7188 116.914C42.3164 117.215 46.7148 116.762 50.9102 115.613C55.7578 114.215 60.4062 111.816 64.7578 108.465C69.0547 105.066 72.4531 101.168 75.0039 96.7695C77.1523 93.0234 78.6016 88.875 79.4492 84.3281C75.1016 83.5781 71.1055 82.2773 67.4062 80.4766C67.1563 82.2266 66.8047 83.9258 66.3047 85.5742C64.6562 90.7227 61.6055 95.0703 57.0586 98.6211C52.5117 102.168 47.5625 104.117 42.1641 104.469C40.4141 104.566 38.6172 104.519 36.7656 104.269C36.7188 104.269 36.668 104.269 36.6172 104.219C29.1719 103.269 23.1211 99.8203 18.4727 93.8711C13.7773 87.875 11.8789 81.1289 12.8281 73.6289L12.8281 73.6289Z" /> + <path fill="#000000" d="M32.4688 67.133C29.7188 69.2305 28.1719 72.0312 27.7227 75.4805C27.3203 78.8281 28.1719 81.8789 30.3203 84.625C32.418 87.375 35.168 88.9727 38.6172 89.4258C42.0664 89.7734 45.1133 88.9258 47.8633 86.8242C50.5625 84.6758 52.1094 81.8789 52.5625 78.5273C53.0117 75.0781 52.1602 71.9805 50.0117 69.2812C47.8633 66.535 45.1133 64.984 41.6641 64.586C38.2148 64.133 35.168 64.984 32.4688 67.133L32.4688 67.133Z" /> + <path fill="#000000" d="M97.293 32.348C95.1445 29.598 92.3438 28.047 88.9453 27.648C85.4961 27.199 82.4492 28.047 79.75 30.199C77 32.297 75.4023 35.098 75.0039 38.543C74.5508 41.941 75.4531 44.992 77.6016 47.742C79.6992 50.441 82.4492 52.039 85.8984 52.488C89.2969 52.84 92.3438 51.988 95.0938 49.891C97.8438 47.742 99.3906 44.941 99.8438 41.594C100.242 38.145 99.3906 35.047 97.293 32.348L97.293 32.348Z" /> + <path fill="#98bf00" d="M85.0469 88.4258C84.5977 88.375 84.1484 88.3242 83.6992 88.2734C82.5977 92.7227 80.8984 96.8711 78.5508 100.621C80.1016 100.519 81.6992 100.57 83.3477 100.769C83.3984 100.769 83.4492 100.769 83.5 100.82C85.3477 101.019 87.0977 101.371 88.7969 101.918C93.9453 103.57 98.293 106.668 101.84 111.215C105.391 115.715 107.289 120.66 107.641 126.109C107.738 127.859 107.688 129.609 107.438 131.457C107.438 131.508 107.438 131.559 107.438 131.656C106.488 139.106 103.039 145.152 97.0938 149.801C91.0938 154.449 84.3477 156.348 76.8008 155.398C69.2539 154.449 63.1563 151 58.5078 145.051C53.8086 139.055 51.9102 132.309 52.8594 124.762C53.0625 123.062 53.4102 121.461 53.9102 119.91C49.6641 121.262 45.2656 121.91 40.6641 121.91C40.6172 122.359 40.5156 122.812 40.4648 123.262C39.1172 134.207 41.8164 144.004 48.6641 152.75C55.4609 161.445 64.3555 166.492 75.3008 167.844C86.2461 169.191 96.043 166.445 104.789 159.645C112.836 153.348 117.734 145.301 119.484 135.457C119.633 134.656 119.734 133.856 119.883 133.008C119.934 132.156 120.035 131.359 120.082 130.559C120.383 125.91 119.934 121.512 118.785 117.363C117.434 112.465 115.035 107.867 111.688 103.519C108.289 99.1719 104.391 95.7227 99.9922 93.2227C96.1953 91.0742 92.0469 89.625 87.4961 88.8242C86.6992 88.6758 85.8984 88.5234 85.0469 88.4258L85.0469 88.4258Z" /> + <path fill="#000000" d="M89.9961 120.41C87.8477 117.664 85.0977 116.113 81.6484 115.664C78.1992 115.266 75.1523 116.113 72.4531 118.262C69.7031 120.41 68.1562 123.16 67.7031 126.559C67.2539 130.008 68.1562 133.059 70.3047 135.805C72.4024 138.555 75.1523 140.106 78.6016 140.504C82.0508 140.953 85.0977 140.106 87.8477 137.953C90.5469 135.805 92.0938 133.059 92.5469 129.609C92.9453 126.211 92.0938 123.16 89.9961 120.41L89.9961 120.41Z" /> + </g> +</svg> diff --git a/Fosdem2024/img/tcc-boot.svg b/Fosdem2024/img/tcc-boot.svg new file mode 100644 index 0000000..b53c61f --- /dev/null +++ b/Fosdem2024/img/tcc-boot.svg @@ -0,0 +1,749 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="293.57745mm" + height="200.97293mm" + viewBox="0 0 293.57746 200.97293" + version="1.1" + id="svg18419" + inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" + sodipodi:docname="tcc-boot.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview18421" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="mm" + showgrid="false" + inkscape:zoom="0.59302246" + inkscape:cx="468.78494" + inkscape:cy="557.31447" + inkscape:window-width="1916" + inkscape:window-height="1029" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs18416"> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-2-2-7-2" /> + <rect + x="142.44379" + y="124.81238" + width="557.94611" + height="67.128738" + id="rect9558-3" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-2" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-9" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-27" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-0" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-27-0" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-0-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-2-8" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-9-7" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-27-0-9" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-0-6-2" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-2-8-7" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-9-7-3" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-27-0-9-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-0-6-2-1" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0-2" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-2-8-7-9" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-9-7-3-4" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-3-27-0-9-6-8" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-5-0-6-2-1-4" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0-2-1" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-6" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-3" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8-0" /> + <rect + x="142.44379" + y="124.81238" + width="381.88513" + height="147.38399" + id="rect9558-2-1-7-6-7-3-6-0-1" /> + <rect + x="142.44379" + y="124.81238" + width="381.88513" + height="147.38399" + id="rect9558-2-1-7-6-7-3-6-0-1-5" /> + <rect + x="142.44379" + y="124.81238" + width="381.88513" + height="147.38399" + id="rect9558-2-1-7-6-7-3-6-0-1-5-7" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8-5" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8-5-3" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8-5-4" /> + <rect + x="142.44379" + y="124.81238" + width="381.88513" + height="147.38399" + id="rect9558-2-1-7-6-7-3-6-0-1-5-4" /> + <rect + x="142.44379" + y="124.81238" + width="454.05267" + height="59.444237" + id="rect9558-2-1-7-6-9-8-5-3-3" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0-2-7" /> + <marker + markerWidth="1.4566435" + markerHeight="2.7211852" + refX="0.15190081" + refY="0" + orient="auto-start-reverse" + id="CapTriangle-2-6-8" + viewBox="0 0 0.525 1" + inkscape:stockid="pin" + style="overflow:visible" + preserveAspectRatio="none" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path7813-0-3-6" + style="fill:context-stroke;stroke-linecap:butt" + d="M 0,-1 1,0 0,1 -0.05,0 Z" + sodipodi:nodetypes="sssssscsss" + transform="scale(0.5)" /> + </marker> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0-2-1-8" /> + <rect + x="142.44379" + y="124.81238" + width="230.965" + height="76.407616" + id="rect9558-2-1-7-6-7-3-6-0-2-1-8-9" /> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(2.540378,5.8676929)"> + <rect + style="fill:#bae964;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.79375;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect9067" + width="48.342495" + height="14.041712" + x="242.69458" + y="181.06352" + ry="7.0208559" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-2-8-7)" + d="M 266.30274,37.491712 V 140.03069" + id="path15453-6-6-1-2-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-27-0-9-6)" + d="m 183.38096,129.46255 c 6.72953,6.56579 9.18338,7.27848 19.80531,8.29487" + id="path15453-6-6-9-2-3-3" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-27-0-9-6-8)" + d="m 224.0937,141.02114 c 6.72953,6.56579 9.18338,7.27848 19.80531,8.29487" + id="path15453-6-6-9-2-3-3-5" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,198.43188,111.45855)" + id="text9556-6-8-9-5-6-1-7-1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-2);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1018"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1016">Tcc-Boot5</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,198.37099,150.34881)" + id="text9556-6-8-9-5-6-1-7-1-0" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-2-1);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1022"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1020">Tcc-Boot6</tspan></tspan></text> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-2-8-7-9)" + d="M 220.3363,51.226896 V 130.08912" + id="path15453-6-6-1-2-9-7" + sodipodi:nodetypes="cc" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-2-8)" + d="M 174.36986,45.092164 V 114.71847" + id="path15453-6-6-1-2" + sodipodi:nodetypes="cc" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-2)" + d="M 128.40341,46.899653 V 98.980794" + id="path15453-6-6-1" + sodipodi:nodetypes="cc" /> + <rect + style="fill:#6398cf;fill-opacity:1;fill-rule:evenodd;stroke:#274f7c;stroke-width:1.0539;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1794" + width="283.15353" + height="47.153473" + x="-2.013428" + y="4.0414853" + ry="5.9787536" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3)" + d="M 82.436973,42.103542 V 85.641601" + id="path15453-6-6" + sodipodi:nodetypes="cc" /> + <path + style="fill:#00ffff;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2)" + d="m 36.470531,30.128945 v 41.67433" + id="path15453-6" + sodipodi:nodetypes="cc" /> + <rect + style="fill:#4f8ac9;fill-opacity:1;fill-rule:evenodd;stroke:#274f7c;stroke-width:0.79375;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect1792" + width="109.70266" + height="36.274845" + x="2.312952" + y="8.9738617" + ry="5.5767975" /> + <path + style="fill:#54ce44;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-6)" + d="m 267.0113,158.34606 -0.0426,18.44426" + id="path15453-6-2" + sodipodi:nodetypes="cc" /> + <rect + style="fill:#bae964;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.79375;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect9067-8" + width="48.342495" + height="14.041712" + x="115.15957" + y="153.09305" + ry="7.0208559" /> + <rect + style="fill:#e9b064;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.448569;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect9067-8-0" + width="15.439051" + height="14.041712" + x="88.433853" + y="144.04735" + ry="7.0208559" /> + <rect + style="fill:#bae964;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.79375;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" + id="rect9067-8-4" + width="48.342495" + height="14.041712" + x="26.912127" + y="153.09305" + ry="7.0208559" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-17.436985,122.72068)" + id="text9556-6-8-9-5-6-1-7-1-4" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-2-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1026"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1024">Tcc-Boot5</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,70.835978,122.73668)" + id="text9556-6-8-9-5-6-1-7-1-0-3" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-2-1-8);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1030"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1028">Tcc-Boot6</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,27.946912,113.42655)" + id="text9556-6-8-9-5-6-1-7-1-0-3-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-2-1-8-9);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="242.05179" + y="152.60678" + id="tspan1034"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1032">=?</tspan></tspan></text> + <path + style="fill:#e9b064;fill-opacity:1;stroke:#d0831d;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#CapTriangle-2);marker-end:url(#CapTriangle-2-6-8)" + d="m 76.759468,160.0926 36.024262,0.0426" + id="path15453-6-2-1" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-27)" + d="m 36.259767,83.730211 c 5.150749,8.922938 14.966467,11.057945 27.025409,9.928869" + id="path15453-6-6-9" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-27-0)" + d="m 83.04162,97.752858 c 5.150749,8.922962 14.966467,11.057972 27.0254,9.928892" + id="path15453-6-6-9-2" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-10.909807,-10.990272)" + id="text9556-6-8-9" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="167.97307" + y="152.60678" + id="tspan1038"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1036">TinyCC-Boot</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-50.97353,-39.584617)" + id="text9556-6-8-9-2" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-9);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="188.0525" + y="152.60678" + id="tspan1042"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1040">TinyCC-Boot source code</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,120.39935,97.660541)" + id="text9556-6-8-9-2-9-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-9-8-0);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="355.86347" + y="152.60678" + id="tspan1046"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1044">...</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,-31.834329,40.9201)" + id="text9556-6-8-9-5" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="211.05966" + y="152.60678" + id="tspan1050"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1048">MesCC</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,16.367939,55.343919)" + id="text9556-6-8-9-5-6" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="198.96517" + y="152.60678" + id="tspan1054"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1052">Tcc-Mes</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,64.733508,70.40866)" + id="text9556-6-8-9-5-6-1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1058"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1056">Tcc-Boot0</tspan></tspan></text> + <path + style="fill:none;fill-opacity:1;stroke:#274f7c;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#CapTriangle-2-3-27-0-9)" + d="m 134.66992,113.49054 c 5.15075,8.92294 14.96647,11.05794 27.0254,9.92887" + id="path15453-6-6-9-2-3" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,116.89098,86.14631)" + id="text9556-6-8-9-5-6-1-7" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="-123.32022" + y="0"><tspan + x="183.84707" + y="152.60678" + id="tspan1062"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1060">Tcc-Boot1</tspan></tspan></text> + <text + xml:space="preserve" + transform="matrix(0.26458333,0,0,0.26458333,134.52869,-23.395679)" + id="text9556-6-8-9-5-6-1-7-5-4" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.2362px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:end;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect9558-2-1-7-6-7-3-6-0-1-5);display:inline;fill:#ffffff;fill-opacity:1;stroke:#616161;stroke-opacity:1" + x="8.6795044" + y="0"><tspan + x="181.1473" + y="152.60678" + id="tspan1066"><tspan + style="font-weight:bold;font-family:B612;-inkscape-font-specification:'B612 Bold'" + id="tspan1064"> -D HAVE_BITFIELD=1 +</tspan></tspan></text> + </g> +</svg> diff --git a/Fosdem2024/template.tex b/Fosdem2024/template.tex new file mode 100644 index 0000000..15b1f41 --- /dev/null +++ b/Fosdem2024/template.tex @@ -0,0 +1,236 @@ +\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +% \selectcolormodel{gray} % Color B&W +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ + +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{fixltx2e} % provides \textsubscript + + +\usefonttheme{professionalfonts} % using non standard fonts for beamer +\usefonttheme{serif} % default family is serif + +% Font +\usepackage{fontspec} +\setmainfont[ + BoldFont = {*-Bold}, + ItalicFont = {*-Italic}, + BoldItalicFont = {*-BoldItalic}, +]{Lato} +\newcommand{\euro}{€} + +% Images with no captions +\usepackage{caption} +\captionsetup[figure]{labelformat=empty} + +% Bullet style +\useinnertheme{circles} +\newlength{\wideitemsep} +\setlength{\wideitemsep}{\itemsep} +\addtolength{\wideitemsep}{5pt} +\let\olditem\item +\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem} + +$if(euro)$ + \newcommand{\euro}{€} +$endif$ + +% Language +\usepackage{polyglossia} +\setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} + +\newif\ifbibliography +$if(natbib)$ +\usepackage{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ + +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ + +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, + citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, +$else$ + pdfborder={0 0 0}, +$endif$ + breaklinks=true} +\urlstyle{same} % don't use monospace font for urls +$if(verbatim-in-note)$ +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(listings)$ +\usepackage{listings} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +\usepackage{caption} +% These lines are needed to make table captions work with longtable: +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +$endif$ + +% Prevent slide breaks in the middle of a paragraph: +\widowpenalties 1 10000 +\raggedbottom + +$if(section-titles)$ +\AtBeginPart{ + \let\insertpartnumber\relax + \let\partname\relax + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \let\insertsectionnumber\relax + \let\sectionname\relax + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \let\insertsubsectionnumber\relax + \let\subsectionname\relax + \frame{\subsectionpage} +} +$endif$ + +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\renewcommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ + +$if(strikeout)$ +\usepackage[normalem]{ulem} +% avoid problems with \sout in headers with hyperref: +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{0} +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + $if(latex-dir-rtl)$ + \usepackage[RTLdocument]{bidi} + $else$ + \usepackage{bidi} + $endif$ +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ + +$if(title)$ +\title{$title$} +$endif$ +$if(subtitle)$ +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +\date{$date$} + +\begin{document} +$if(title)$ +\frame{\titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +\begin{frame} +\tableofcontents[hideallsubsections] +\end{frame} + +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +\end{frame} + +$endif$ +$endif$ +$if(biblatex)$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliographytrue +\printbibliography[heading=none] +\end{frame} + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} |