Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change Request: Drop Node v12/v14/v16/v17/v19 support #17595

Closed
1 task done
mdjermanovic opened this issue Sep 21, 2023 · 20 comments · Fixed by #17725
Closed
1 task done

Change Request: Drop Node v12/v14/v16/v17/v19 support #17595

mdjermanovic opened this issue Sep 21, 2023 · 20 comments · Fixed by #17725
Assignees
Labels
breaking This change is backwards-incompatible core Relates to ESLint's core APIs and features enhancement This change enhances an existing feature of ESLint

Comments

@mdjermanovic
Copy link
Member

ESLint version

8.49.0

What problem do you want to solve?

ESLint v8 supports "node": "^12.22.0 || ^14.17.0 || >=16.0.0".

Node 12, 14, 16, 17, 19 are EOL.

What do you think is the correct solution?

In v9, we'd drop support for EOL versions and keep only Node 18, Node 20, and above.

Participation

  • I am willing to submit a pull request for this change.

Additional comments

At the moment, I don't have a concrete proposal for minor versions of Node 18 and Node 20 we'd like to support. Any suggestions?

@mdjermanovic mdjermanovic added enhancement This change enhances an existing feature of ESLint core Relates to ESLint's core APIs and features breaking This change is backwards-incompatible labels Sep 21, 2023
@nzakas
Copy link
Member

nzakas commented Sep 21, 2023

Most recent versions at the moment: v18.18.0 and v20.7.0.

@LewisIsWorking

This comment was marked as off-topic.

@kibertoad
Copy link

@mdjermanovic Are there any features in semver minor of 18.x that ESLint could benefit from?

@nzakas
Copy link
Member

nzakas commented Sep 25, 2023

@kibertoad that's what we need to find out. Would you be interested in researching what has been added in the various semver minor releases and commenting back here?

@kibertoad
Copy link

I'd be happy to

@ota-meshi
Copy link
Member

I think with Node v18 we can remove graphemer and use Intl.Segmenter instead.

@nzakas
Copy link
Member

nzakas commented Oct 26, 2023

@kibertoad do you still intend to do this?

@kibertoad
Copy link

@nzakas yes. please give me time until Monday (eod)

@nzakas
Copy link
Member

nzakas commented Oct 26, 2023

@kibertoad sounds good. Thanks!

@kibertoad
Copy link

One day late, but I've finally started the research today.

@kibertoad
Copy link

  • CLI Test runner (18.1.0) - in case you are considering switching to node:test
  • node:test mocking (18.11.0)
  • parseArgs module (18.3.0) - might be interesting.
  • Experimental ESM Loader Hooks API (18.6.0) - probably not relevant
  • Runtime userland snapshots (18.8.0) - not sure if relevant
  • Watch mode (18.11.0) - not sure if relevant
  • buffer.isUtf8 for utf8 validation (18.14.0) - might be interesting
  • buffer: add isAscii method (18.15.0) - might be interesting
  • implement URL.canParse (18.17.0)
  • add recursive option to readdir and opendir (18.17.0)
  • esm: add --import flag (18.18.0)

@nzakas
Copy link
Member

nzakas commented Nov 1, 2023

@kibertoad awesome, thank you!

Since we opened this, v20 has gone LTS, so I'd suggest we set our minimum v18 version at v18.18.0.

For v20, I'd suggest we set our minimum to be v20.7.0, unless anything super useful has been released since then.

@kibertoad
Copy link

@nzakas Sounds good!

unless anything super useful has been released since then.

Not really, 20.8.0 improves performance of streams and improves memory management of vm, neither of which seems particularly relevant for ESLint. 20.8.1 is a security release, 20.9.0 is just an LTS version bump.

@ljharb
Copy link
Sponsor Contributor

ljharb commented Nov 1, 2023

probably best to start with v20.9.0 then, since there’s no long term support for any v20 releases before then

@mdjermanovic
Copy link
Member Author

Since we opened this, v20 has gone LTS, so I'd suggest we set our minimum v18 version at v18.18.0.

For v20, I'd suggest we set our minimum to be v20.7.0, unless anything super useful has been released since then.

Sounds good to me.

In the meantime, Node.js 21 has been released. The latest version is v21.1.0, so perhaps we could set the requirements to:

^18.18.0 || ^20.7.0 || >=21.1.0

Thoughts?

@nzakas
Copy link
Member

nzakas commented Nov 6, 2023

Works for me.

@ljharb
Copy link
Sponsor Contributor

ljharb commented Nov 6, 2023

(again, tho, i'd start with 20.9.0 and not 20.7.0 since 20.9 is LTS and 20.7 is not)

mdjermanovic added a commit that referenced this issue Nov 6, 2023
Drops support for Node.js 12/14/16/17/19

Fixes #17595
@nzakas
Copy link
Member

nzakas commented Nov 10, 2023

I'm fine with that. @mdjermanovic ?

@mdjermanovic
Copy link
Member Author

Makes sense to me. I updated #17725 with ^20.9.0.

@sam3k
Copy link
Contributor

sam3k commented Dec 1, 2023

Per 2023-11-30 tsc-meeting decision, this issue has been set to ready to merge.

mdjermanovic added a commit that referenced this issue Dec 20, 2023
* feat!: Require Node.js `^18.18.0 || ^20.7.0 || >=21.1.0`

Drops support for Node.js 12/14/16/17/19

Fixes #17595

* update getting-started

* fix lint errors

* 20.7.0 -> 20.9.0
aladdin-add added a commit to eslint/espree that referenced this issue Dec 27, 2023
refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>
aladdin-add added a commit to eslint/eslintrc that referenced this issue Dec 27, 2023
refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>
aladdin-add added a commit to eslint/create-config that referenced this issue Dec 27, 2023
aladdin-add added a commit to eslint/eslint-scope that referenced this issue Dec 27, 2023
refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>
aladdin-add added a commit to eslint/generator-eslint that referenced this issue Dec 27, 2023
refs: eslint/eslint#17595

Signed-off-by: 唯然 <weiran.zsd@outlook.com>
nzakas pushed a commit to eslint/eslint-scope that referenced this issue Jan 2, 2024
* feat!: Require Node.js ^18.18.0 || ^20.9.0 || >=21.1.0

refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>

* Update ci.yml

---------

Signed-off-by: 唯然 <weiran.zsd@outlook.com>
nzakas pushed a commit to eslint/generator-eslint that referenced this issue Jan 2, 2024
refs: eslint/eslint#17595

Signed-off-by: 唯然 <weiran.zsd@outlook.com>
aladdin-add added a commit to eslint/create-config that referenced this issue Jan 19, 2024
* feat!: Require Node.js ^18.18.0 || ^20.9.0 || >=21.1.0

refs: eslint/eslint#17595

* Update ci.yml

* chore: rm patch-esmock

* docs: update node.js requirement
aladdin-add added a commit to eslint/espree that referenced this issue Jan 25, 2024
refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>
mdjermanovic pushed a commit to eslint/espree that referenced this issue Jan 25, 2024
* feat!: Require Node.js ^18.18.0 || ^20.9.0 || >=21.1.0

refs: eslint/eslint#17595
Signed-off-by: 唯然 <weiran.zsd@outlook.com>

* Update ci.yml

---------

Signed-off-by: 唯然 <weiran.zsd@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking This change is backwards-incompatible core Relates to ESLint's core APIs and features enhancement This change enhances an existing feature of ESLint
Projects
Archived in project
Status: Done
Development

Successfully merging a pull request may close this issue.

8 participants
@nzakas @ljharb @sam3k @kibertoad @ota-meshi @LewisIsWorking @mdjermanovic and others