Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

@typescript/vfs: createVirtualTypeScriptEnvironment stores a duplicate SourceFile per file that the language service never reads

Aperta
#3,614 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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/updateFile parse a SourceFile (ts.createSourceFile / ts.updateSourceFile) and pass it down to createVirtualCompilerHost's updateFile, which saves it in its internal sourceFiles map.
  • The language service never reads that map — its host's getScriptSnapshot reads text from sys, and the language service parses and caches its own SourceFiles 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/TypeScript-Website

Tutte le issue di microsoft/TypeScript-Website

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.