chapter 1: c, c++ and other languages which system programmers used before the existence of rust, there were serious limitations. those languages allowed the programmer to compile any code regardless of what it has. it gave full control to the programmer. but the problem was, it was too much control where you couldnt move confidently and work on more ambitious projects.
primarily, rust takes undefined behavior of c / c++ off the table and substantially changes the way you think about writing code in rust.
modifying large / complex programs become less risky since the compiler will warn and catch you if you mess up.
pointer validity, memory mgmt etc is taken care of.
the same restrictions which allow the above to happen, also helps with parellel processing
which means you can use synchronization primitives and also concurrency primitives like mutexes, condition variables, channels and atomics ( idk what those mean yet ) it also lets you distribute complex loads across pools of processors ( more concuurrency stuff ) lock free synchronization mechanisms like read copy update, etc
lock-free here means doesnt block the cpu and lets other processes continue in the background ig
rust is designed to be fast - efficient defaults but still gives you ability to control how memory gets used and what the processor does
it also makes collabing easier with cargo, and libraries, flexible interfaces via traits and generics
terms i did not understand in chapter 1:
- true type parser
- undefined behavior ( i have a vague idea but not so much )
- dangling pointers
- double frees
- null pointer dereferences
- buffer overruns
- pointer validity
- threads
- synchronization primitives
- mutexes
- condition variables
- channels
- atomics
- concurrency primitives
- lock free sync mechs - read copy update