BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//pretalx//papers.synesthesia.it//QTRWK7
BEGIN:VTIMEZONE
TZID:CET
BEGIN:STANDARD
DTSTART:20001029T040000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:CET
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:20000326T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
UID:pretalx-swiftheroes-2024-QTRWK7@papers.synesthesia.it
DTSTART;TZID=CET:20240418T121000
DTEND;TZID=CET:20240418T125000
DESCRIPTION:## This talk will teach the audience 3 ideas:\n\n 1. Typestate 
 Design Pattern\, popular in Rust\, and now available in Swift 5.9.\n 2. Sw
 ift 5.9's new Noncopyable types and consuming functions.\n 3. The power of
  generic constraints.\n\n\n### Typestate Design Pattern:\n- Understand how
  Typestate brings the concept of a State Machine into the type system\, ca
 tching serious logic mistakes at compile time.\n- Explore its application 
 in mission-critical systems\, with a real-world example of a Tesla car\, h
 ighlighting its importance in safety-critical scenarios\, .\n\n### Swift 5
 .9's New Noncopyable Types:\n- Discover Swift 5.9's strict memory ownershi
 p model and the Noncopyable types.\n- Understand how consuming functions p
 revent the reuse of state variables\, ensuring compiler-enforced state tra
 nsitions\n\n### The Power of Generic Constraints:\n- Learn how generic con
 straints allow us to enforce state-specific operations at the type level\,
  eliminating the need for runtime guard checks.\n\n## Practical examples:\
 n\n- **Coin-operated turnstile**: Walk through the step-by-step implementa
 tion of a Turnstile using the Typestate pattern in Swift.\n- **Playing Vid
 eo games on a Tesla Car**: Explore the example of how a Tesla car can use 
 the real steering wheel and pedals to either control the physical car or a
  video game car\, depending on its state. Highlighting the safety guarante
 es that Typestate provides in high-stakes scenarios.\n\n## Conclusion and 
 Takeaways:\n- Go through the checklist to evaluate how the Typestate Desig
 n Pattern fits into your projects\, especially if you deal with state mach
 ines\, require a strict order of operations\, or need to manage resources.
 \n- Recap how Typestate helps prevent serious errors without relying heavi
 ly on traditional quality control measures such as tests\, linters\, code 
 review\, etc.
DTSTAMP:20240417T102932Z
LOCATION:Auditorium
SUMMARY:Typestate - the new Design Pattern in Swift 5.9 - Alex Ozun
URL:https://papers.synesthesia.it/swiftheroes-2024/talk/QTRWK7/
END:VEVENT
END:VCALENDAR
