Lowent Manual←↑→

A note on this translation

The Korean edition is the original. This English edition is translated from it chapter by chapter, and chapter numbers are kept identical to the original, so a cross-reference to “chapter 12” means the same chapter in both editions. The examples are shared: both editions print the same programs and the same verified output.

Contents

Part I — Getting started

1. What Lowent sets out to do2. A first program — build, run, get rejected3. The surface — full stops, blocks and clause order

Part II — Values and flow

4. Numbers — fixed-width integers and floating point5. Ops — fn and proc6. Locals — let and var7. Flow — branches, loops and leaving early8. Expressions — prefix notation and the expr island

Part III — Data

9. Sequences — arrays and slices10. Aggregates — struct and enum11. Types that hold answers — option and result12. Borrowing — ref and mut_ref13. Named types — type, newtype, range, cast

Part IV — Contracts and effects

14. Contracts — write them, have them checked, lose the checks15. Effects — the marks an op leaves on the world16. Capabilities — power that is handed over17. Designing failure

Part V — Memory

18. Regions — where values live, and memory reclaimed all at once19. Ownership — one party responsible for disposal20. Allocators and fixed memory

Part VI — Abstraction

21. Modules — hidden by default22. Generics — parameters fixed at translation time23. Traits — one promise kept by many types24. pipe — one line for each thing you mean to do

Part VII — Concurrency

25. Actors — living with state, by messages26. Tasks and channels — exchange between bound flows27. Parallel loops and atomic operations

Part VIII — The outside world

28. Input, output and files29. Meeting C30. Hardware — registers, interrupts, machine instructions31. Building and testing — packages, configuration, tests, cross-checks

Part IX — The standard library

32. A map of the standard library33. Text and encodings — strings, fmt, utf8, codec, hash34. Containers and sorting — sortlib, sortgen, hashmap, vecgen, spsc35. Storage and handles — pool, shard, budget, wire36. Input/output, networking, time, randomness, cryptography37. The terminal — term and tty

Part X — Grounds: what has been proven

38. Why prove39. The mathematical toolkit40. Proofs about numbers — widening, narrowing, division41. Proofs about bounds — intervals, relations, row-major addresses42. Proofs about ownership and borrowing43. Loops and fixed points — proving “however many times”44. Proofs about effects — writing “what it can do” into the type45. Proofs about races and parallelism — discipline instead of a memory model46. Proofs about weak memory — with the default, you may think sequentially47. Proofs about locks — where heavy tools are really needed48. Proofs about syntax — whichever closer closes it, the same tree49. Proofs about hashes — calling things by content, not name50. What is not proven