summaryrefslogtreecommitdiff
path: root/cli/tsc/99_main_compiler.js
AgeCommit message (Collapse)Author
2024-04-06perf(lsp): Don't retain `SourceFileObject`s in `sourceFileCache` longer than ↵Nathan Whitaker
necessary (#23258) The TS language service requests source files via [getSourceFile](https://github.com/nathanwhit/deno/blob/7a25fd5ef0a82c2aac76594ccd467e9210e92b80/cli/tsc/99_main_compiler.js#L560). In that function, we [unconditionally add](https://github.com/nathanwhit/deno/blob/7a25fd5ef0a82c2aac76594ccd467e9210e92b80/cli/tsc/99_main_compiler.js#L613-L614) the source file to our sourceFileCache. The issue is that we only remove things from that cache if the source file [becomes out of date](https://github.com/nathanwhit/deno/blob/7a25fd5ef0a82c2aac76594ccd467e9210e92b80/cli/tsc/99_main_compiler.js#L777-L783). For files that don't get changed, we keep them in the cache indefinitely. So sometimes we keep SourceFile objects from being GC'ed because they're retained in our cache, even though TS doesn't refer to them any more. I see this in pretty much all of the heap snapshots I've taken. --- The fix here is pretty direct - just store weak references to the sourcefiles in the cache. It doesn't really change our caching behavior, it just prevents us from being the only retainer of a `SourceFile`. I also split the `sourceFileCache` into a separate cache just for assets, as we rely on those being alive. The simpler fix is to only cache assets, but presumably that has a perf impact. --- In local testing, this PR reduced the size of the JS heap by about 1 GB when using `deno lsp` in the Typescript repo.
2024-03-29fix(lsp): implement missing ts server host apis (#23131)Nayeem Rahman
2024-03-27fix(check): do not suggest running with `--unstable` (#23092)David Sherret
Closes #23079
2024-03-26refactor(lsp): unify config file data into ConfigTree (#23032)Nayeem Rahman
2024-01-22feat(unstable): remove Deno.upgradeHttp API (#21856)Bartek Iwańczuk
Closes https://github.com/denoland/deno/issues/21828. This API is a huge footgun. And given that "Deno.serveHttp" is a deprecated API that is discouraged to use (use "Deno.serve()" instead); it makes no sense to keep this API around. This is a step towards fully migrating to Hyper 1.
2024-01-10fix(lsp): implement host.getGlobalTypingsCacheLocation() (#21882)Nayeem Rahman
2024-01-08perf(lsp): use host-owned cache for auto-import completions (#21852)Nayeem Rahman
2024-01-01chore: update copyright to 2024 (#21753)David Sherret
2023-12-28perf(lsp): use LanguageServiceHost::getProjectVersion() (#21719)Nayeem Rahman
2023-12-12perf(lsp): use null types instead of stub modules (#21541)Nayeem Rahman
2023-12-11perf(lsp): simplify some of the startup code (#21538)Bartek Iwańczuk
Remove some dead code in "99_main_compiler.js". Eagerly start the LSP TSC host, it was adding some not needed complexity around the TSC thread code.
2023-12-06feat: TypeScript 5.3 (#21480)David Sherret
https://github.com/denoland/TypeScript/pull/9
2023-12-03refactor: faster args for op_load in TSC (#21438)Bartek Iwańczuk
This commit changes the argument that "op_load" accepts, from a serde struct to "&str". This should equal to a slightly better performance.
2023-12-02perf(lsp): fix redundant serialization of sources (#21435)Nayeem Rahman
2023-12-01perf(lsp): better op performance logging (#21423)Bartek Iwańczuk
2023-11-30perf(lsp): remove throttling of cancellation token (#21395)Bartek Iwańczuk
This commit removes "ThrottledCancellationToken" in favor of "CancellationToken". Since calling into Rust to check if Tokio's cancellation token has already been canceled is really cheap, there's no need for us to throttle this check and let TSC burn up CPU with heavy computation.
2023-11-01feat: precompile JSX (#20962)Bartek Iwańczuk
Co-authored-by: Marvin Hagemeister <marvin@deno.com>
2023-11-01feat: disposable Deno resources (#20845)Luca Casonato
This commit implements Symbol.dispose and Symbol.asyncDispose for the relevant resources. Closes #20839 --------- Signed-off-by: Bartek Iwańczuk <biwanczuk@gmail.com> Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-10-02refactor(lsp): clean up tsc requests (#20743)Nayeem Rahman
2023-09-18fix(lsp): pass quote preference to tsc (#20547)Nayeem Rahman
2023-08-26feat(lsp): update imports on file rename (#20245)Nayeem Rahman
Closes https://github.com/denoland/vscode_deno/issues/410.
2023-08-17fix(lsp): pass fmt options to completion requests (#20184)Nayeem Rahman
Fixes https://github.com/denoland/vscode_deno/issues/856.
2023-08-01fix: deno diagnostic - clarify where to put triple-slash directive (#20009)David Sherret
Some people might not know what "entrypoint" means or where to put the triple-slash directive.
2023-07-13fix(tsc): more informative diagnostic when `Deno` does not exist (#19825)David Sherret
Also improved the diagnostic when using something like `Deno.openKv` and it doesn't exist.
2023-04-01perf(check): faster source hashing (#18534)David Sherret
2023-04-01fix(check): ensure diagnostics caused by changes in other files get ↵David Sherret
invalidated between runs (#18541) Regression caused by the performance improvement in #18329. Figuring this out was hard. It's luckily still fast after this change. Closes #18516
2023-03-30fix(lsp): `textDocument/references` should respect `includeDeclaration` (#18496)David Sherret
2023-03-24chore(types): fix type checking errors in 99_main_compiler.js (#18403)David Sherret
2023-03-21perf(check): type check local files only when not using `--all` (#18329)David Sherret
Closes #18171
2023-03-21feat: TypeScript 5.0.2 (except decorators) (#18294)David Sherret
This upgrades TypeScript to 5.0.2, but does not have ES decorator support because swc does not support that yet.
2023-03-11fix(check): regression where config "types" entries caused type checking ↵David Sherret
errors (#18124) Closes #18117 Closes #18121 (this is just over 10ms faster in a directory one up from the root folder) cc @nayeemrmn
2023-02-21chore: remove base64 encoding code from typescript snapshot (#17862)David Sherret
This code is no longer used because we use swc for this now.
2023-01-24feat: support node built-in module imports (#17264)Bartek Iwańczuk
Co-authored-by: David Sherret <dsherret@gmail.com>
2023-01-14refactor(tsc): do not store some typescript declaration file text in ↵David Sherret
multiple places (#17410)
2023-01-02chore: update copyright year to 2023 (#17247)David Sherret
Yearly tradition of creating extra noise in git.
2022-11-23chore: more debug logging and avoid allocating strings in ts logging when ↵David Sherret
not debug (#16689)
2022-10-22fix(lsp): regression - error when removing file (#16388)David Sherret
2022-10-21feat(unstable/npm): initial type checking of npm specifiers (#16332)David Sherret
2022-10-16feat: support inlay hints (#16287)Kitson Kelly
Closes: #11853
2022-08-11perf(ops): Monomorphic sync op calls (#15337)Aapo Alasuutari
Welcome to better optimised op calls! Currently opSync is called with parameters of every type and count. This most definitely makes the call megamorphic. Additionally, it seems that spread params leads to V8 not being able to optimise the calls quite as well (apparently Fast Calls cannot be used with spread params). Monomorphising op calls should lead to some improved performance. Now that unwrapping of sync ops results is done on Rust side, this is pretty simple: ``` opSync("op_foo", param1, param2); // -> turns to ops.op_foo(param1, param2); ``` This means sync op calls are now just directly calling the native binding function. When V8 Fast API Calls are enabled, this will enable those to be called on the optimised path. Monomorphising async ops likely requires using callbacks and is left as an exercise to the reader.
2022-08-04fix: Update `Object.prototype.__proto__` related comments (#15394)Yongwook Choi
2022-07-12perf: use emit from swc instead of tsc (#15118)David Sherret
2022-07-12fix(lsp): enable auto imports (#15145)Kitson Kelly
Fixes: #15111
2022-06-27fix(lsp): restart TS language service when caching dependencies (#14979)Bartek Iwańczuk
2022-06-23fix(check): ignore TS2306 (#14940)Nayeem Rahman
Fixes a regression where this type checking error was being surfaced in certain scenarios.
2022-06-15fix(check): use "moduleDetection": "force" (#14875)Nayeem Rahman
2022-06-03fix(lsp): handle get diagnostic errors better (#14776)Kitson Kelly
2022-06-01feat: update to TypeScript 4.7 (#14242)Kitson Kelly
2022-05-17fix: base64 encoding of source maps with emojis (#14607)Bartek Iwańczuk
This commit fixes source maps for files that contain emojis. This is done by updating "deno_ast" to "0.14.1" for the case of "--no-check" flag (ie using SWC emit) and by overriding TSC's default base64 encoder (which turned out to be buggy) for the type checking case.
2022-05-15fix(lsp): correct positions in some scenarios (#14359)David Sherret