Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scala: Context & Observability

Scala: Context & Observability

Slides for The Art of Scala presentation in Warsaw on 25th May 2023

Michał Bednarz

May 25, 2023
Tweet

Other Decks in Programming

Transcript

  1. Scala:
    Context & Observability

    View Slide

  2. Context propagation
    explicit
    parameter
    implicit
    parameter

    View Slide

  3. Thread-safe state on
    JVM
    AtomicRef ThreadLocal
    Every thread has its own local copy
    of the state which is not visible to
    the others
    Shared state safely updated by many
    threads using optimistic concurrency (CAS)

    View Slide

  4. Context propagation
    on JVM
    ThreadLocal
    InheritableThreadLocal
    DynamicVariable

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. Scope
    Lexical Dynamic
    Depends on location in source
    code
    Depends on method call
    graph

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. Functional context
    propagation
    ReaderT / Kleisli
    (cats)
    IOLocal
    (cats-effect)
    Context functions
    (scala 3)

    View Slide

  15. Context propagation
    with cats-mtl
    Ask Local Stateful
    read-only environment
    effect
    dynamic scope
    effect
    shared mutable state
    effect

    View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. Local + log4cats
    demo

    View Slide

  24. View Slide

  25. Local + log4cats + IOLocal
    demo

    View Slide

  26. View Slide

  27. View Slide

  28. Scala 3
    Context Functions

    View Slide

  29. View Slide

  30. linktr.ee/mbednarz

    View Slide