feat: Initial check-in
This commit is contained in:
		
							parent
							
								
									19e5090491
								
							
						
					
					
						commit
						d93d2a2d71
					
				
					 1 changed files with 56 additions and 0 deletions
				
			
		
							
								
								
									
										56
									
								
								notes.org
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								notes.org
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					#+TITLE: Bootstrapping, reproducibility, etc.
 | 
				
			||||||
 | 
					#+AUTHOR: Vincent Ambo
 | 
				
			||||||
 | 
					#+DATE: <2018-03-10 Sat>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Compiler bootstrapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  This section contains notes about compiler bootstrapping, the
 | 
				
			||||||
 | 
					  history thereof, which compilers need it - and so on:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** C
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Haskell
 | 
				
			||||||
 | 
					   - self-hosted compiler (GHC)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Common Lisp
 | 
				
			||||||
 | 
					   CL is fairly interesting in this space because it is a language
 | 
				
			||||||
 | 
					   that is defined via an ANSI standard that compiler implementations
 | 
				
			||||||
 | 
					   normally actually follow!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** Python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* A note on runtimes
 | 
				
			||||||
 | 
					  Sometimes the compiler just isn't enough ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					** LLVM
 | 
				
			||||||
 | 
					** JVM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Resources:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  http://bootstrappable.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Slide thoughts:
 | 
				
			||||||
 | 
					  1. Hardware trust has been discussed here a bunch, most recently
 | 
				
			||||||
 | 
					     during the puri.sm talk. Hardware trust is important, as we see
 | 
				
			||||||
 | 
					     with IME, but it's striking that people often take a leap to "I'm
 | 
				
			||||||
 | 
					     now on my trusted Debian with free software".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Unless you built it yourself from scratch (Spoiler: you haven't)
 | 
				
			||||||
 | 
					     you're placing trust in what is basically foreign binary blobs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Agenda: Implications/attack vectors of this, state of the chicken
 | 
				
			||||||
 | 
					     & egg, the topic of reproducibility, what can you do? (Nix!)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  2. Chicken-and-egg issue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     It's an important milestone for a language to become self-hosted:
 | 
				
			||||||
 | 
					     You begin doing a kind of dogfeeding, you begin to enforce
 | 
				
			||||||
 | 
					     reliability & consistency guarantees to avoid having to redo your
 | 
				
			||||||
 | 
					     own codebase constantly and so on.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     However, the implication is now that you need your own compiler
 | 
				
			||||||
 | 
					     to compile itself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     Common examples:
 | 
				
			||||||
 | 
					     - gcc builds with gcc
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue