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

Making util.TextDecoder and util.TextEncoder available on the global object #20365

Closed
MarkTiedemann opened this issue Apr 27, 2018 · 6 comments
Closed
Labels
encoding Issues and PRs related to the TextEncoder and TextDecoder APIs. feature request Issues that request new features to be added to Node.js. util Issues and PRs related to the built-in util module.

Comments

@MarkTiedemann
Copy link
Contributor

MarkTiedemann commented Apr 27, 2018

  • Version: v10.0.0
  • Platform: Microsoft Windows [Version 10.0.16299.371]
  • Subsystem: util

Just wondering since the WHATWG URL API was made available on the global object in Node v10.0.0: Should the WHATWG TextEncoder and TextDecoder APIs (that are currectly available via require('util')) be made available on the global object, too, or are there any reasons for not doing so?

PS: If this should be done, I'd love to start working on a PR for it.

@addaleax addaleax added util Issues and PRs related to the built-in util module. feature request Issues that request new features to be added to Node.js. labels Apr 27, 2018
@addaleax
Copy link
Member

@nodejs/tsc

@addaleax addaleax added the encoding Issues and PRs related to the TextEncoder and TextDecoder APIs. label Apr 27, 2018
@mcollina
Copy link
Member

+1 as semver-major.

@jasnell
Copy link
Member

jasnell commented Apr 27, 2018

+1 as a major

@BridgeAR
Copy link
Member

Just as a note: the more we add as globals, the harder it gets to lazy load parts of core to improve startup time and to minimize memory overhead.

@MarkTiedemann
Copy link
Contributor Author

MarkTiedemann commented May 10, 2018

@BridgeAR I agree with you in general. I do think, however, in this particular case const { deprecate } = NativeModule.require('internal/util'); is called before const { TextEncoder, TextDecoder } = NativeModule.require('internal/util');. Not sure how NativeModule.require works internally, but I would expect the second call not to add large overhead. Is that correct?

EDIT: Correction: deprecate is required after TextEncoder and TextDecoder.

@BridgeAR
Copy link
Member

See #20567. It is the combination of all those files at startup time. It is not about this specifically (it would be fine as it is right now) but I just want to point out in general that every added global is making it more difficult to load less things on startup. Using getters for the globals would help but at least for console it should not be a getter due to the spec. I do not know if that is also here the case but I guess it is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
encoding Issues and PRs related to the TextEncoder and TextDecoder APIs. feature request Issues that request new features to be added to Node.js. util Issues and PRs related to the built-in util module.
Projects
None yet
Development

No branches or pull requests

5 participants