@typescript/vfs: createVirtualTypeScriptEnvironment stores a duplicate SourceFile per file that the language service never reads
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- tooling
Direzione di ricerca
Inizia in packages/typescript-vfs/src/index.ts e segui le chiamate createFile/updateFile di createVirtualTypeScriptEnvironment fino a createVirtualCompilerHost's updateFile. Verifica come viene popolata la mappa sourceFiles e se il language service la legge. Il lavoro è completo quando viene eliminata la memorizzazione duplicata inutilizzata di SourceFile senza modificare il comportamento del language service; esegui i test esistenti del package, se disponibili.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Page URL: https://github.com/microsoft/TypeScript-Website/blob/v2/packages/typescript-vfs/src/index.ts (@typescript/vfs)
Issue:
createVirtualTypeScriptEnvironment permanently stores a second parsed AST for every file, roughly doubling per-file memory.
Where the duplicates are created:
- The env's
createFile/updateFileparse aSourceFile(ts.createSourceFile/ts.updateSourceFile) and pass it down tocreateVirtualCompilerHost'supdateFile, which saves it in its internalsourceFilesmap. - The language service never reads that map — its host's
getScriptSnapshotreads text fromsys, and the language service parses and caches its ownSourceFiles from those snapshots.
So the ASTs in the compiler-host map are write-only: every file that goes through env.createFile/env.updateFile is held as two full ASTs (the language service's copy plus the map's copy), and the map's copy is never released for the lifetime of the env.
- Lingua principale
- TypeScript
- Stelle
- 2.6k
- Fork
- 1.5k
- Merge medio
- 2g 12h
- PR unite (30g)
- 8
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/TypeScript-Website
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
microsoft/TypeScript-Website#3607 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
microsoft/TypeScript-Website#3039 ·
I maintainer di solito rispondono entro 2 giorni
-
More examples of `infer`Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
microsoft/TypeScript-Website#2998 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
microsoft/TypeScript-Website#3583 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
microsoft/TypeScript-Website#3571 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di microsoft/TypeScript-Website
Issue simili
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
StabilityNexus/Fate-EVM-Frontend#153 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
code-yeongyu/oh-my-openagent#9039 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Tencent/teamai-cli#862 ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue hacktoberfest redis
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
libredb/libredb-studio#1164 ·
I maintainer di solito rispondono entro 1 giorno
-
flake
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno