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

The future of JavaScript

The future of JavaScript

Lucas Santos

July 10, 2023
Tweet

More Decks by Lucas Santos

Other Decks in Technology

Transcript

  1. The future of JS
    it's not about what it is, but what it could be

    View Slide

  2. who am I_
    {twitter, youtube, linkedin…}.lsantos.dev
    software engineer_
    [email protected]

    View Slide

  3. agenda_
    - How JS actually evolves
    - What's coming next
    - 👍 - stage 4 proposals
    - 🤩 - stage 3 proposals
    - 🤔 - stage 2 proposals
    - 👀 - stage 1 proposals
    - Final remarks and refs

    View Slide

  4. How JS evolves?

    View Slide

  5. JS is actually not JS

    View Slide

  6. What is JS

    View Slide

  7. What is JS

    View Slide

  8. What is JS

    View Slide

  9. What is JS
    this is JavaScript

    View Slide

  10. What is JS
    this is JavaScript

    View Slide

  11. What is JS
    this is JavaScript

    View Slide

  12. What is JS
    this is JavaScript
    these are the caretakers

    View Slide

  13. TC39 is organized in stages

    View Slide

  14. there are 5 stages (or 4)

    View Slide

  15. summary
    - Stage 0 - Draft
    - Stage 1 - Better draft
    - Stage 2 - Definition
    - Stage 3 - Refinements
    - Stage 4 - Shipping 🚀

    View Slide

  16. warning

    View Slide

  17. Stage 4
    things that are shipped!

    View Slide

  18. RegEx unicode sets mode

    View Slide

  19. aka: the v flag

    View Slide

  20. RegEx v flag

    View Slide

  21. RegEx v flag

    View Slide

  22. RegEx v flag

    View Slide

  23. RegEx v flag https://lsantos.dev/v8-regexp-v

    View Slide

  24. RegEx v flag https://lsantos.dev/mdn-regex-set

    View Slide

  25. Change array by copy

    View Slide

  26. change array by copy

    View Slide

  27. change array by copy

    View Slide

  28. change array by copy

    View Slide

  29. change array by copy https://lsantos.dev/mdn-array-copy

    View Slide

  30. Stage 3
    things that are done

    View Slide

  31. temporal

    View Slide

  32. temporal

    View Slide

  33. temporal

    View Slide

  34. temporal
    https://blog.lsantos.dev/temporal-api/

    View Slide

  35. temporal
    https://lsantos.dev/tc39-temporal

    View Slide

  36. what's the status?

    View Slide

  37. testing temporal

    View Slide

  38. explicit resource
    management

    View Slide

  39. aka: using

    View Slide

  40. using

    View Slide

  41. using

    View Slide

  42. using

    View Slide

  43. using
    constructor
    called

    View Slide

  44. using
    constructor
    called
    conn[Symbol.dispose]() called as
    scope ends

    View Slide

  45. async using

    View Slide

  46. async using
    https://lsantos.dev/tc39-using

    View Slide

  47. JS native decorators

    View Slide

  48. JS native decorators

    View Slide

  49. JS native decorators

    View Slide

  50. JS native decorators

    View Slide

  51. JS native decorators

    View Slide

  52. JS native decorators: class methods

    View Slide

  53. JS native decorators: class assessors

    View Slide

  54. JS native decorators: class fields

    View Slide

  55. JS native decorators: classes

    View Slide

  56. we cannot decorate parameters https://lsantos.dev/tc39-parameter-decorators

    View Slide

  57. more resources
    https://lsantos.dev/tc39-decorators

    View Slide

  58. more resources
    https://lsantos.dev/tc39-decorators
    https://blog.lsantos.dev/javascript-decorators/

    View Slide

  59. Other proposals

    View Slide

  60. other proposals
    - New methods to Set https://lsantos.dev/tc39-set-methods

    View Slide

  61. other proposals
    - (async)Iterator helpers https://lsantos.dev/tc39-iterator-helpers

    View Slide

  62. Stage 2
    things that are getting there

    View Slide

  63. throw expressions

    View Slide

  64. throw expressions

    View Slide

  65. throw expressions

    View Slide

  66. throw expressions
    https://lsantos.dev/tc39-throw

    View Slide

  67. immutable structures

    View Slide

  68. records: immutable objects

    View Slide

  69. records: immutable objects

    View Slide

  70. records: immutable objects

    View Slide

  71. tuples: immutable arrays

    View Slide

  72. tuples: immutable arrays https://lsantos.dev/tc39-records

    View Slide

  73. JSON.parseImmutable

    View Slide

  74. pipeline operator

    View Slide

  75. pipeline operator

    View Slide

  76. pipeline operator

    View Slide

  77. pipeline operator
    https://lsantos.dev/tc39-pipeline-op

    View Slide

  78. iterator ranges

    View Slide

  79. Iterator.range

    View Slide

  80. Other proposals

    View Slide

  81. other proposals
    - Array grouping https://github.com/tc39/proposal-array-grouping

    View Slide

  82. other proposals
    - parseImmutable https://github.com/tc39/proposal-json-parseimmutable

    View Slide

  83. other proposals
    - map.upsert https://github.com/tc39/proposal-upsert

    View Slide

  84. Stage 1
    things

    View Slide

  85. types in JS

    View Slide

  86. types in JS
    https://lsantos.dev/tc39-js-types

    View Slide

  87. do expressions

    View Slide

  88. do expressions
    https://lsantos.dev/tc39-do-expr

    View Slide

  89. pattern matching

    View Slide

  90. pattern matching
    https://lsantos.dev/tc39-pattern-matching

    View Slide

  91. Other proposals

    View Slide

  92. other proposals
    - Function memoization https://github.com/tc39/proposal-function-memo
    - Reversible split https://github.com/tc39/proposal-reversible-string-split
    - slice notation https://github.com/tc39/proposal-slice-notation
    - operator overloading https://github.com/tc39/proposal-operator-overloading
    - object pick/omit https://github.com/tc39/proposal-object-pick-or-omit
    - parameter decorator https://github.com/tc39/proposal-class-method-parameter-decorators
    - structs and mutexes https://github.com/tc39/proposal-structs
    - Intl.MessageFormat https://github.com/tc39/proposal-intl-messageformat

    View Slide

  93. refs_
    - https://lsantos.dev/tc-39-type-annotations
    - https://lsantos.dev/tc39-process
    - https://lsantos.dev/tc39-stage-1
    - https://lsantos.dev/tc39-stage-2
    - https://lsantos.dev/tc39-stage-3
    - https://lsantos.dev/tc39-stage-4
    - https://lsantos.dev/ecma-262

    View Slide

  94. This talk: https://lsantos.dev/whats-next-for-js

    View Slide

  95. thank you_
    lsantos.dev

    View Slide