<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>The Tyu Programming Language on</title><link>https://tyu.lexbytes.org/en/</link><description>Recent content in The Tyu Programming Language on</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://tyu.lexbytes.org/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Appendix A — Language Reference</title><link>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-a-language-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-a-language-reference/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Status: condensed, verified against the compiler at draft time. Where&#10;the older &lt;code&gt;tyu-technical-manual.md&lt;/code&gt; disagrees with this appendix, this&#10;appendix wins — it was checked against the current tree (the manual&#10;still shows the retired &lt;code&gt;requires [ … ]&lt;/code&gt; predicate syntax, for&#10;example).&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="a1-table-a1--the-built-in-words"&gt;&#10; &lt;a class="docs-heading-anchor" href="#a1-table-a1--the-built-in-words" aria-label="Link to A.1 Table A.1 — the built-in words"&gt;#&lt;/a&gt;&#10; A.1 Table A.1 — the built-in words&#10;&lt;/h2&gt;&#10;&lt;p&gt;The compiler ships exactly sixteen words. Everything else in the&#10;vocabulary is written in Tyu (see chapter 2.8, and the sysroot sources).&#10;&lt;code&gt;net&lt;/code&gt; is the change in stack depth; &lt;code&gt;high&lt;/code&gt; the peak (chapter 6).&lt;/p&gt;</description></item><item><title>Chapter 1 — The Rigor Is the Engine</title><link>https://tyu.lexbytes.org/en/docs/latest/part-1/ch01-the-rigor-is-the-engine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-1/ch01-the-rigor-is-the-engine/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;A program is a stack of promises.&#10;The only question is who checks them: the author, at 3 a.m. —&#10;or the machine, before lunch.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="11-two-ways-to-be-careful"&gt;&#10; &lt;a class="docs-heading-anchor" href="#11-two-ways-to-be-careful" aria-label="Link to 1.1 Two ways to be careful"&gt;#&lt;/a&gt;&#10; 1.1 Two ways to be careful&#10;&lt;/h2&gt;&#10;&lt;p&gt;There are two ways to write careful software.&lt;/p&gt;&#10;&lt;p&gt;The first is &lt;strong&gt;vigilance&lt;/strong&gt;. The ritual is familiar. A function acquires a&#10;precondition that isn&amp;rsquo;t expressible in the type system — the buffer must be at&#10;least as long as the count, the handle must not already be locked, the table&#10;must still be sorted — so the author writes the rule down in the only places&#10;left: a comment above the definition, a naming convention, a README that&#10;everyone is &lt;em&gt;sure&lt;/em&gt; to read.&lt;/p&gt;</description></item><item><title>Chapter 13 — Field Updates on Untrusted Media</title><link>https://tyu.lexbytes.org/en/docs/latest/part-4/ch13-field-updates-on-untrusted-media/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-4/ch13-field-updates-on-untrusted-media/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Anything that can update itself can be replaced by something else.&#10;The question is who gets the last word.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="131-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#131-the-practice" aria-label="Link to 13.1 The Practice"&gt;#&lt;/a&gt;&#10; 13.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;A module is safe to load when everything it claims has&#10;been checked or authenticated, and the loader refuses everything else —&#10;so the daring operation, installing new code on a running device from&#10;untrusted media, becomes a checklist the machine executes.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 3 — Types: Making Illegal Values Unrepresentable</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch03-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch03-types/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Every value is a claim about the world.&#10;A type is the claim written where the machine can read it.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="31-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#31-the-practice" aria-label="Link to 3.1 The Practice"&gt;#&lt;/a&gt;&#10; 3.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Every value has a type, and the type says which values&#10;make sense and which words may touch them. The checker rejects programs&#10;that break the promise before they exist — and when a value breaks it at&#10;run time anyway, the runtime traps with a name, not a shrug.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 9 — Factoring: Style Becomes Proof</title><link>https://tyu.lexbytes.org/en/docs/latest/part-3/ch09-factoring-style-becomes-proof/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-3/ch09-factoring-style-becomes-proof/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Until you can name it, you cannot check it.&#10;Until you can check it, you were only hoping.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="91-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#91-the-practice" aria-label="Link to 9.1 The Practice"&gt;#&lt;/a&gt;&#10; 9.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Factor so each word can be described in one sentence —&#10;and so every proof the checker makes attaches to the smallest unit that&#10;can carry it. How a program is divided decides where its claims live, and&#10;claims that live at interfaces get checked at every call.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Appendix B — Error and Trap Registry</title><link>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-b-error-registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-b-error-registry/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Every code in this book&amp;rsquo;s labs, with the fixture that earned it. The&#10;checker&amp;rsquo;s error codes are falsifiable claims: each one exists because a&#10;violation exists. Bands: &lt;code&gt;10xx–70xx&lt;/code&gt; compiler front end, &lt;code&gt;32xx–37xx&lt;/code&gt;&#10;typecheck, &lt;code&gt;36xx&lt;/code&gt; MMIO, &lt;code&gt;50xx&lt;/code&gt; effects/contexts, &lt;code&gt;51xx&lt;/code&gt; stack bounds,&#10;| &lt;code&gt;52xx&lt;/code&gt; loader.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="compile-time-rejections-verified-in-this-book"&gt;&#10; &lt;a class="docs-heading-anchor" href="#compile-time-rejections-verified-in-this-book" aria-label="Link to Compile-time rejections verified in this book"&gt;#&lt;/a&gt;&#10; Compile-time rejections verified in this book&#10;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Code&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Meaning&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Lab&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E1018&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;main&lt;/code&gt; must return exactly one value (the exit code)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E2195&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;legacy &lt;code&gt;requires [ … ]&lt;/code&gt; predicate — use &lt;code&gt;needs [ … ]&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(migration note, ch. 4)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E2201&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;imported interface not found for this platform&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E2203&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;imported symbol not exported by the interface&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E2218&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;interface/implementation word signature mismatch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E2219&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;interface/implementation word effect mismatch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3202&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;stack underflow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3210&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;word not found&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3211&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;signature stack underflow at a call&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(trace idiom, ch. 2)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3212&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;call-site type mismatch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3220&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;declared stack effect vs computed body&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.6, 6.2, 9.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3242&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;if&lt;/code&gt; cannot pop a condition&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(ch. 2 notes)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3243&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;if&lt;/code&gt; condition is not a bool&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.7 variant&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3246&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;if&lt;/code&gt; branch depth mismatch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2.7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3251&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;while&lt;/code&gt; cannot pop its condition&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(ch. 2 notes)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3253&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;while&lt;/code&gt; condition is not a quotation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(ch. 2 notes)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3257&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;while&lt;/code&gt; body is not net-zero&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3304&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;bitcast&lt;/code&gt; size mismatch&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3305&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;raw pointer cast&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3.7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3310&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;contract verdict count wrong (one bool on top)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4.4, 4.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3311&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;contract verdict is not a bool&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3312&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;contract modified its inputs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(registry; shape rarely reachable)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3608&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO bitfield is not addressable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3611&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO register misaligned&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3640&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO without a platform descriptor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3644&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO board instance not found&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3647&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO register-map rows disagree with the descriptor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E3760&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;call&lt;/code&gt;/&lt;code&gt;spawn&lt;/code&gt; of an unannotated quotation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5001&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;suspend where forbidden (main, lock, ISR)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.7, 11.3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5002&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;nested lock&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11.2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5004&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;capability missing (resource access outside its lock)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5005&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;undeclared effect&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5010&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;dup&lt;/code&gt; of an &lt;code&gt;iso&lt;/code&gt; value&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5011&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;implicit &lt;code&gt;drop&lt;/code&gt; of an &lt;code&gt;iso&lt;/code&gt; value&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5012&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;use after move&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5020&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;borrow escaped its block&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5021&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;conflicting live borrows of one root&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;7.8&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5022&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;dup&lt;/code&gt; of a live mutable borrow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;(ch. 7 prose, verified)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5030&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ISR stack exceeds its budget&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11.5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5031&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;interrupt-reachable resource accessed unlocked&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;11.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;E5040&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;unbounded (self-recursive) handler&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="runtime-trap-codes"&gt;&#10; &lt;a class="docs-heading-anchor" href="#runtime-trap-codes" aria-label="Link to Runtime trap codes"&gt;#&lt;/a&gt;&#10; Runtime trap codes&#10;&lt;/h2&gt;&#10;&lt;p&gt;Hosted exit status equals the trap code.&lt;/p&gt;</description></item><item><title>Chapter 10 — Decomposition: Information Hiding, Enforced</title><link>https://tyu.lexbytes.org/en/docs/latest/part-3/ch10-decomposition-information-hiding-enforced/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-3/ch10-decomposition-information-hiding-enforced/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Hide what might change.&#10;Then let the machine check that you hid it.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall, after Parnas&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="101-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#101-the-practice" aria-label="Link to 10.1 The Practice"&gt;#&lt;/a&gt;&#10; 10.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;A module is a decision about what might change. Its&#10;interface file is the promise the rest of the program is allowed to know,&#10;and the checker holds both sides to it: the implementation must match the&#10;interface, and callers are checked against the interface — whether or not&#10;the implementation exists.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 14 — Epilogue: Tyu's Effect on Thinking</title><link>https://tyu.lexbytes.org/en/docs/latest/part-4/ch14-epilogue-tyus-effect-on-thinking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-4/ch14-epilogue-tyus-effect-on-thinking/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The Vigilance Trap is closed.&#10;Not because everyone stopped being careful —&#10;because being careful stopped being the mechanism.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Chapter 1 opened with two ways to be careful, and promised the second.&#10;Look back at what &amp;ldquo;moving the promise into the program&amp;rdquo; turned out to&#10;mean, claim by claim:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;The claim&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;The check&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Where it was earned&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;my stack ends where I say&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the stack-effect checker&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;my values stay in their ranges&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;subtypes, trap 21&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 3&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;this is true whenever the word runs&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;contracts, trap 20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;I only do what I declared&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the effect matrix&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 5&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;my stack never rises past its shape&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the &lt;code&gt;(net, high)&lt;/code&gt; monoid&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 6&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;one writer, or many readers; custody moves&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the borrow ledger&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 7&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;the hardware is what the descriptor says&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MMIO checking&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 8&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;this word is one sentence&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;factoring, made mechanical&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 9&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;the interface is the whole truth&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the &lt;code&gt;.def&lt;/code&gt; mirror&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 10&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;the handler and mainline cannot race&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the cross-context rule&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 11&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;the scheduler holds what I handed it&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;effects + annotations&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 12&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;this module may run here&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the loader&amp;rsquo;s gates&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ch. 13&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Twelve claims. None of them is a comment. The daring they licensed — an&#10;interrupt sharing a device, signed code arriving from untrusted media —&#10;was not made safe by a framework or a review process. It was made safe&#10;because each claim got small enough to check, and then the checks got&#10;composed.&lt;/p&gt;</description></item><item><title>Chapter 2 — First Words</title><link>https://tyu.lexbytes.org/en/docs/latest/part-1/ch02-first-words/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-1/ch02-first-words/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Data stack, data stack, does whatever a data stack does.&#10;Push a thing, push a thing, then a word consumes the two.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall, after a hard day&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="21-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#21-the-practice" aria-label="Link to 2.1 The Practice"&gt;#&lt;/a&gt;&#10; 2.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Every word declares its effect on the stack, and the&#10;checker holds the body to the declaration — one term at a time, left to&#10;right, exactly the way the machine runs them.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 4 — Contracts: Promises the Machine Reads</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch04-contracts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch04-contracts/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;A type says what a value &lt;em&gt;is&lt;/em&gt;.&#10;A contract says what must be &lt;em&gt;true&lt;/em&gt;.&#10;Only one of them fits in a comment.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="41-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#41-the-practice" aria-label="Link to 4.1 The Practice"&gt;#&lt;/a&gt;&#10; 4.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;A contract is a checked program about a claim: the&#10;checker verifies the claim&amp;rsquo;s shape at compile time, the runtime verifies&#10;the claim&amp;rsquo;s truth at the boundary, and both verifications apply to every&#10;caller, present and future.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Appendix C — Toolchain Setup (current procedure)</title><link>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-c-toolchain-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-c-toolchain-setup/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Temporary by the project&amp;rsquo;s own roadmap: a script/rustup-style installer&#10;will replace this procedure. Until then, this is the setup this book&amp;rsquo;s&#10;labs were verified with.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="build-the-toolchain"&gt;&#10; &lt;a class="docs-heading-anchor" href="#build-the-toolchain" aria-label="Link to Build the toolchain"&gt;#&lt;/a&gt;&#10; Build the toolchain&#10;&lt;/h2&gt;&#10;&lt;p&gt;Prerequisites: Rust (pinned by &lt;code&gt;rust-toolchain.toml&lt;/code&gt;), &lt;code&gt;fasm&lt;/code&gt; (flat&#10;assembler), GNU &lt;code&gt;ld&lt;/code&gt;, &lt;code&gt;cc&lt;/code&gt;, and — for the QEMU track and the metal&#10;interludes — &lt;code&gt;qemu-system-x86_64&lt;/code&gt; plus the cross binutils&#10;(&lt;code&gt;gcc-arm-none-eabi&lt;/code&gt;, &lt;code&gt;gcc-riscv64-unknown-elf&lt;/code&gt;).&lt;/p&gt;&#10;&lt;figure class="docs-codeblock docs-codeblock--console"&gt;&lt;div&#10; class="docs-codeblock__body"&#10; data-codeblock&#10; data-copy-label="Copy code"&#10; data-copied-label="Copied"&#10; data-copy-failed-label="Copy failed"&#10; &gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; cargo build --release -p langc -p tyu -p lmod-pack -p lmod-sign -p lmod-encrypt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; &lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$PWD&lt;/span&gt;&lt;span class="s2"&gt;/target/release:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# tyu finds langc on PATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; langc --help&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; tyu &lt;span class="nb"&gt;help&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/figure&gt;&#10;&lt;h2 id="the-two-tracks"&gt;&#10; &lt;a class="docs-heading-anchor" href="#the-two-tracks" aria-label="Link to The two tracks"&gt;#&lt;/a&gt;&#10; The two tracks&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Hosted&lt;/strong&gt; (most labs): &lt;code&gt;--target=x86_64-unknown-linux-gnu&lt;/code&gt; — builds and&#10;runs on the computer, no simulator.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;QEMU metal&lt;/strong&gt; (chapters 8 and 6&amp;rsquo;s interlude): &lt;code&gt;--target=x86_64-unknown-none --platform=x86_64-unknown-none&lt;/code&gt; — runs under &lt;code&gt;qemu-system-x86_64&lt;/code&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-commands-used-in-this-book"&gt;&#10; &lt;a class="docs-heading-anchor" href="#the-commands-used-in-this-book" aria-label="Link to The commands used in this book"&gt;#&lt;/a&gt;&#10; The commands used in this book&#10;&lt;/h2&gt;&#10;&lt;figure class="docs-codeblock docs-codeblock--console"&gt;&lt;div&#10; class="docs-codeblock__body"&#10; data-codeblock&#10; data-copy-label="Copy code"&#10; data-copied-label="Copied"&#10; data-copy-failed-label="Copy failed"&#10; &gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; build + direct run &lt;span class="o"&gt;(&lt;/span&gt;hosted&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; tyu build labs/.../lab.mod --target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-unknown-linux-gnu &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; --sysroot=sysroot --out-dir=build/&amp;lt;name&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; ./build/&amp;lt;name&amp;gt;/image.elf&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; harness run &lt;span class="o"&gt;(&lt;/span&gt;checks the S marker, classifies the verdict&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; tyu run labs/.../lab.mod --target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-unknown-linux-gnu &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; --sysroot=sysroot --out-dir=build/&amp;lt;name&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; MMIO chapters: name the platform pack, and use static link mode&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; tyu &lt;span class="nb"&gt;test&lt;/span&gt; --manifest&lt;span class="o"&gt;=&lt;/span&gt;labs/ch08/manifest.toml &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; --target=x86_64-unknown-none --platform=x86_64-unknown-none \&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; --mode=static&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; inspection &lt;span class="o"&gt;(&lt;/span&gt;the debugging habit of ch. 2&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; langc --emit&lt;span class="o"&gt;=&lt;/span&gt;tc labs/.../lab.mod --sysroot&lt;span class="o"&gt;=&lt;/span&gt;sysroot &lt;span class="c1"&gt;# per-term stack trace&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; langc --emit&lt;span class="o"&gt;=&lt;/span&gt;ir labs/.../lab.mod --sysroot&lt;span class="o"&gt;=&lt;/span&gt;sysroot &lt;span class="c1"&gt;# IR dump&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/figure&gt;&#10;&lt;h2 id="a-project-manifest-optional"&gt;&#10; &lt;a class="docs-heading-anchor" href="#a-project-manifest-optional" aria-label="Link to A project manifest (optional)"&gt;#&lt;/a&gt;&#10; A project manifest (optional)&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;tyu.toml&lt;/code&gt; in a project directory removes the repeated flags:&lt;/p&gt;</description></item><item><title>Chapter 11 — Shared State and the Cross-Context Rule: Interrupts</title><link>https://tyu.lexbytes.org/en/docs/latest/part-3/ch11-shared-state-and-the-cross-context-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-3/ch11-shared-state-and-the-cross-context-rule/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The interrupt arrives in a microsecond.&#10;The race it creates ships for a year.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="111-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#111-the-practice" aria-label="Link to 11.1 The Practice"&gt;#&lt;/a&gt;&#10; 11.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Shared hardware is proven, not prayed over: if an&#10;interrupt can reach a resource, every access everywhere is inside a lock,&#10;the lock lowers to whatever the platform needs, and the handler&amp;rsquo;s own&#10;stack is budgeted at its binding. The race that ships for a year becomes&#10;a compile error that ships never.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 5 — Effects and Capabilities: The Two-Sided Law</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch05-effects-and-capabilities/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch05-effects-and-capabilities/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;A signature can say what arrives and what leaves.&#10;The interesting question is what happens &lt;em&gt;in between&lt;/em&gt;.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="51-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#51-the-practice" aria-label="Link to 5.1 The Practice"&gt;#&lt;/a&gt;&#10; 5.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Declare what a word does; the caller decides. A word&amp;rsquo;s&#10;effects are checked against the context that calls it, and a context&amp;rsquo;s&#10;capabilities belong to the code lexically inside it — so the reviewer&#10;reads the label on the tin, and the compiler checks that the contents&#10;match.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Appendix D — Style Summary (one page)</title><link>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-d-style-summary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/appendices/appendix-d-style-summary/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The book in one page. Each rule has a chapter; each rule is checked by&#10;something.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="claims"&gt;&#10; &lt;a class="docs-heading-anchor" href="#claims" aria-label="Link to Claims"&gt;#&lt;/a&gt;&#10; Claims&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Every word declares its stack effect — and the declaration is true&#10;(ch. 2).&lt;/li&gt;&#10;&lt;li&gt;Ranges live in subtypes; choices live in enums; groupings live in&#10;structs (ch. 3).&lt;/li&gt;&#10;&lt;li&gt;Contracts are arithmetic about the values in view: no tautologies, no&#10;effects, no drift (ch. 4). Write them the way the prover will want&#10;them.&lt;/li&gt;&#10;&lt;li&gt;Declare what a word does (&lt;code&gt;performs&lt;/code&gt;) and what it needs granted&#10;(&lt;code&gt;requires&lt;/code&gt;); the caller decides (ch. 5).&lt;/li&gt;&#10;&lt;li&gt;Beyond two or three stack items, name them (&lt;code&gt;=&amp;gt;&lt;/code&gt;) (ch. 2, 9).&lt;/li&gt;&#10;&lt;li&gt;Recursion is net-zero per level or it is rejected — keep it that way&#10;(ch. 6).&lt;/li&gt;&#10;&lt;li&gt;One writer or many readers, never both; a borrow&amp;rsquo;s life is its&#10;bracket; custody moves and is never cloned (ch. 7).&lt;/li&gt;&#10;&lt;li&gt;Hardware is named, never addressed; the descriptor wins every&#10;disagreement (ch. 8).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="design"&gt;&#10; &lt;a class="docs-heading-anchor" href="#design" aria-label="Link to Design"&gt;#&lt;/a&gt;&#10; Design&#10;&lt;/h2&gt;&#10;&lt;ol start="9"&gt;&#10;&lt;li&gt;Factor until every word passes the one-sentence test; stop before&#10;shims (ch. 9).&lt;/li&gt;&#10;&lt;li&gt;Factor along the grammar: predicates keep their subject, loop bodies&#10;are net-zero, locked sections stay inline (ch. 5, 9).&lt;/li&gt;&#10;&lt;li&gt;A module&amp;rsquo;s &lt;code&gt;.def&lt;/code&gt; is its constitution: exports are decisions, the&#10;mirror never drifts (ch. 10).&lt;/li&gt;&#10;&lt;li&gt;A shared resource is a declared resource, and the lock is bought only&#10;where reachability demands it (ch. 11).&lt;/li&gt;&#10;&lt;li&gt;A worker&amp;rsquo;s quotation carries its annotation; a join lives under its&#10;discharge (ch. 12).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="field"&gt;&#10; &lt;a class="docs-heading-anchor" href="#field" aria-label="Link to Field"&gt;#&lt;/a&gt;&#10; Field&#10;&lt;/h2&gt;&#10;&lt;ol start="14"&gt;&#10;&lt;li&gt;If a fact is load-bearing, it is not a comment (ch. 1).&lt;/li&gt;&#10;&lt;li&gt;Checked failures are the cheapest failures: trap codes are verdicts,&#10;not embarrassments (ch. 1).&lt;/li&gt;&#10;&lt;li&gt;A proof states its boundary. Say what is proven, what is not, and&#10;which workstream closes it (ch. 6, 11, 13).&lt;/li&gt;&#10;&lt;li&gt;The mirror, the wall, and the seal are one mechanism: promises live&#10;in interfaces, interfaces are hashed, and hashes are refused on&#10;mismatch (ch. 10, 13).&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="the-two-sentences-to-carry"&gt;&#10; &lt;a class="docs-heading-anchor" href="#the-two-sentences-to-carry" aria-label="Link to The two sentences to carry"&gt;#&lt;/a&gt;&#10; The two sentences to carry&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;em&gt;Everything claimed, the machine checks; claims are cheap, and lies&#10;are loud.&lt;/em&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;Safety is not the brake — it is the engine: the rigor licenses the&#10;daring parts.&lt;/em&gt;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Chapter 12 — Tasks and Channels: Concurrency the Platform Provides</title><link>https://tyu.lexbytes.org/en/docs/latest/part-3/ch12-tasks-and-channels/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-3/ch12-tasks-and-channels/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The scheduler is not in the language.&#10;The language is what makes the scheduler safe to use.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="121-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#121-the-practice" aria-label="Link to 12.1 The Practice"&gt;#&lt;/a&gt;&#10; 12.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Concurrency is declared, not assumed: the platform&#10;supplies the scheduler, the effects say who may suspend, the annotations&#10;say what escapes into it, and every safety property it needs — locks,&#10;custody, bounds — is one this book has already paid for.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 6 — The Stack Has a Shape</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch06-the-stack-has-a-shape/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch06-the-stack-has-a-shape/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Every phrase has a height.&#10;Most languages measure it at 3 a.m., in the field, with a broken device.&#10;Tyu measures it at compile time, on paper.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="61-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#61-the-practice" aria-label="Link to 6.1 The Practice"&gt;#&lt;/a&gt;&#10; 6.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Every phrase has a shape — what it adds, what it&#10;removes, and how high it reaches. The checker computes the reach for&#10;every word, composes it through every call, and refuses programs whose&#10;reach cannot be bounded.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 7 — Places, Borrowing, Ownership</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch07-places-borrowing-ownership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch07-places-borrowing-ownership/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Copying is a decision someone made.&#10;Ownership is a decision someone has to answer for.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="71-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#71-the-practice" aria-label="Link to 7.1 The Practice"&gt;#&lt;/a&gt;&#10; 7.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;A place has one address and a rule: one writer or many&#10;readers, never both. A pointer borrows a place and lives exactly as long&#10;as its block. Custody moves — it is never cloned. The checker keeps the&#10;ledger, and the ledger has no rounding errors.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Chapter 8 — Touching Hardware: MMIO</title><link>https://tyu.lexbytes.org/en/docs/latest/part-2/ch08-touching-hardware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/part-2/ch08-touching-hardware/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;The datasheet is a specification.&#10;Most languages make you retype it as comments.&#10;Tyu makes you retype it as a contract.&lt;/p&gt;&#10;&lt;p&gt;— workshop wall&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="81-the-practice"&gt;&#10; &lt;a class="docs-heading-anchor" href="#81-the-practice" aria-label="Link to 8.1 The Practice"&gt;#&lt;/a&gt;&#10; 8.1 The Practice&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;The Practice.&lt;/strong&gt; &lt;em&gt;Hardware is described once, in a platform descriptor —&#10;devices named, registers placed, access rules stated. The source&amp;rsquo;s&#10;register-map is checked against that description row by row, and every&#10;access the source writes is checked against the rules. The datasheet&#10;becomes a compiler input.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Search</title><link>https://tyu.lexbytes.org/en/docs/latest/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tyu.lexbytes.org/en/docs/latest/search/</guid><description>&lt;p&gt;Search all fourteen chapters and four appendices of &lt;em&gt;Assembling in Tyu&lt;/em&gt;.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;With JavaScript&lt;/strong&gt;, typing searches the full book index — titles,&#10;descriptions, and prose; code blocks are stripped before indexing.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Without JavaScript&lt;/strong&gt;, the complete page list below the search box is the&#10;catalog: use your browser&amp;rsquo;s find-in-page, or browse the sidebar.&lt;/li&gt;&#10;&lt;/ul&gt;</description></item></channel></rss>