TypeScript 3.5 Iteration Plan

Created on 23 Mar 2019  ยท  10Comments  ยท  Source: microsoft/TypeScript

This document outlines our focused tasks for TypeScript 3.5, as well as some of the discussion that explains how/why we prioritized certain work items. Nothing is set in stone, but we will strive to complete them in a reasonable timeframe.

Dates

Here's the release plan.

  1. May 10th: Create a release-3.5 branch, and update the version to 3.5.0-rc. master is locked from receiving new feature-work that is not 3.5-bound.

    1. Start a build of TypeScript for Visual Studio for our remote testing team.

  2. May 15th: Last day to adjust the release-3.5 branch with any feedback we receive.

    1. Kick off a final Visual Studio build if necessary.

    2. (2pm Pacific) Produce an insiders release for VS Code.

  3. Morning of May 16th: The release candidate goes out.
  4. May 24th: Merge master into release-3.5 one last time, finalize the version as 3.5.1. master is unlocked. Critical changes for 3.5 must be ported in.

    1. Start a build of TypeScript for Visual Studio for our remote testing team.

  5. May 29th: Last day to adjust the release-3.5 branch with any feedback we receive.

    1. Kick off a final Visual Studio build if necessary.

    2. (2pm Pacific) Produce an insiders release for VS Code which is identical to the final release.

  6. May 30th: Announcing TypeScript 3.5 ๐Ÿš€

Work Items

Expected Work Items

  • Language

    • [ ] [Investigate negated types](https://github.com/Microsoft/TypeScript/pull/29317) ๐Ÿƒ๐Ÿปโ€

    • [ ] [globalThis expressivity fixes](https://github.com/Microsoft/TypeScript/issues/30477)

    • [ ] [Strongly typed iterators and generators](https://github.com/Microsoft/TypeScript/issues/2983)

  • Compiler

    • [x] Anticipated --incremental fixes and improvements

    • [ ] [--declaration and --allowJs](https://github.com/Microsoft/TypeScript/issues/7546)

    • [ ] [--declaration and --isolatedModules](https://github.com/Microsoft/TypeScript/issues/29490)

    • [ ] [APIs for --incremental and composite projects (--build mode)](https://github.com/Microsoft/TypeScript/issues/29978) ๐Ÿƒ

    • [ ] Investigate TypeScript plugin APIs ๐Ÿƒ

  • Language Service

    • [x] [Smart Select API](https://github.com/Microsoft/TypeScript/issues/29071)

    • [x] [Sorted/prioritized completions](https://github.com/Microsoft/TypeScript/issues/15024)

    • [x] [Extract type](https://github.com/Microsoft/TypeScript/issues/23869)

  • Infrastructure

    • [ ] Automated testing infrastructure for language service on real world code ๐Ÿƒ๐Ÿปโ€

    • [ ] [Migrate to ESLint](https://github.com/Microsoft/TypeScript/issues/30553) ๐Ÿƒ๐Ÿปโ€

(๐Ÿƒ๐Ÿปโ€ means work has already started)

Deferred Work Items


Planning Meeting Notes

Motivations

  • Goals and current 6-month roadmap
  • GitHub user feedback (๐Ÿ‘s)
  • Feedback from customer interviews and social media.
  • Visual Studio and Visual Studio Code feedback and new functionality demands
  • Actionable PRs (need to make a call)
  • Bug backlog

General (compiler/infrastructure/reliability)

  • Negated types

    • Rationale: Core type system
    • Uses: control flow analysis on generic/"higher order" types
    • Problems: But you end up with lots of vacuous intersections that are "garbage" types.
    • Will likely lead to a tail of bugs, at least initially
    • Action item: need to prototype, see what sort of breakage we see with implementations of integration with control-flow analysis, and see what the perf impact is.
    • โœ… Work on this.
  • Arbitrary index signatures

    • Rationale: Core type system
    • Not a must for negated types
    • But like to get them done first.
    • Also need a unifying concept between them and mapped object types.
    • Resolution: Defer
  • Compiler API prototyping

    • Rationale: minification, 3rd party tools integration
    • In progress
    • โœ…
  • Expecting --incremental build issues

    • Rationale: Stability, scaling, performance
    • โœ…
  • Crawler work for testing TSServer

    • Rationale: Stability
    • Context:

      • IntelliCode team crawls public code to train on, but leverages TSServer.

      • Turns out that it was a great way to test TSServer and catch bugs!

      • We want to leverage it to get a good litmus that it's stable.

      • Give partner teams assurance that they can adopt nightly TypeScripts.

    • โœ…
  • TSLint -> ESLint migration

    • Internal engineering
    • โœ…
  • New engineer starting!

    • Ramping-up bugs
    • Website

      • Education and UX

    • โœ…
  • globalThis-related work

    • Bug and standards involvement
    • Issues with block-scoped declarations interfacing with the global object.
    • โœ…
  • --declaration with --allowJs

    • TypeScript beyond TypeScript
    • โœ… ๐ŸŽ‰
  • --declaration with --isolatedModules

    • User demand
    • Aside: Ensure this all works with composite.
    • Resolution: investigate

Productivity

  • Smart Select API

    • #29071

    • VS Code ask, but generally applicable editor integration

    • โœ…

  • Sorted/prioritized completions

    • #15024

    • Editor quality improvements

    • This and smart select have been around for long enough that they get priority.

    • โœ…

  • Extract type refactoring

    • #23869

    • Shouldn't it just always work?



      • <T>(x: T): { value: T }


      • It has all the same problems as extract method!





        • Well you don't have to worry about control flow.






    • Could just do this for non-generic types for the minimal-viable product (MVP).

    • Resolution: try to get done for 3.5. โœ…

  • Call hierarchy breadcrumbs
Planning

Most helpful comment

@DanielRosenwasser Thanks for being so transparent with the plans. It was way cool to read the 3.4 release announcement and then pop over here to see that you already have pretty developed plans for the next iteration.

Go TypeScript team!

All 10 comments

@DanielRosenwasser Thanks for being so transparent with the plans. It was way cool to read the 3.4 release announcement and then pop over here to see that you already have pretty developed plans for the next iteration.

Go TypeScript team!

Amazing work guys!

Iโ€™dย like toย seeย https://github.com/Microsoft/TypeScript/pull/30586 fixed.

Preferably inย some way that isnโ€™t just aย bandโ€‘aid.

What's TypeScript plugin API? Does this affect babel-plugin-transform-typescript users?

Is it possible to be involved in testing for "Investigate TypeScript plugin APIs"?

I'd love to have typescript-plugin-css-modules available during build time. I'm currently in the process of reworking it a little, so please let me know.

I'd like to see #21592 fixed.

It force me to stuck with TypeScript 3.1.6 ๐Ÿ˜ข(the only version without this bug among TS 3.x)

Hey all, just wanted to put out a couple of updates. A few of the items in this release were reprioritized, and as a result, what you see in the current feature roadmap is the closest to what you'll see in the release next week.

There are a couple of reasons why, but most of it was that TypeScript 3.4 was rockier than expected, and so was some breakage in TypeScript 3.5 itself. We ended up spending a lot of time servicing the last release or chasing down regressions.

It turns out that our testing infrastructure, while improved, needs investment. Our testing suite isn't up to date on real world code, and doesn't test things like editor scenarios (e.g. keystroke delays when a library like styled-components is present). We need to do our due diligence to invest in this testing infrastructure and run it more frequently on major changes. We also want to make it easier to contribute repositories to TypeScript's code suite.

Another thing we've been feeling is that we as a language need to have more time to let features "bake". We may be moving towards 3-month release cycles to address stability issues and feel confident in our design decisions. We'd like to experiment with this release cycle to ensure that users get stable well-designed features without compromising the rapid iteration we've been able to provide.

Much of this will also be coming in TypeScript 3.6. Keep posted for the upcoming iteration plan.

Just as one final heads up - due to personnel reasons, we'll be releasing tomorrow morning (the 29th) rather than Thursday the 30th. See you then!

We did it!

Why hasn't 3.5.x been released on GitHub? It's tagged as the latest on npm.

Was this page helpful?
0 / 5 - 0 ratings