purecopy mai necessario nella configurazione dell'utente o nelle librerie di terze parti. In realtà, è una no-op quando chiamato da una normale istanza di Emacs. Da Pure Storage :
Questa funzione è no-op tranne quando Emacs viene creato e scaricato ; di solito viene chiamato solo nei file Lisp precaricati.
Di seguito alcune informazioni di base.
Conservazione pura
Emacs ha un processo di costruzione in due fasi. Crea prima un semplice binario, quindi esegue questo binario, carica un set selezionato di librerie integrate, quindi scarica un'immagine di memoria del processo e crea il vero emacsbinario da questo dump.
Le ragioni di questo complicato processo sono le prestazioni migliori e il minor utilizzo della memoria: il pre-caricamento delle librerie Emacs Lisp essenziali consente un avvio più rapido, poiché non sono necessari ulteriori IO per caricare le librerie integrate e riduce l'utilizzo della memoria, poiché le librerie precaricate può essere condiviso tra tutte le istanze di Emacs.
Questa particolare area di memoria che contiene le librerie precaricate è la "memoria pura". È di sola lettura, quindi "puro", consentire la suddetta condivisione della memoria. Quindi, purecopyè una no-op nelle normali istanze di Emacs: non può comunque scrivere nella memoria pura. Di conseguenza, anche l'archiviazione pura è esente dalla raccolta dei rifiuti.
Tuttavia, durante la creazione e il dumping dell'immagine di memoria per le librerie precaricate, queste librerie possono essere utilizzate purecopyper "contrassegnare" oggetti specifici per l'allocazione nella memoria pura, in genere oggetti utilizzati di frequente che sono comunque necessari per l'intera vita di Emacs.
Le stringhe nella memoria pura sono essenzialmente stringhe costanti statiche globali. Poiché "make -k"verrà utilizzato frequentemente durante l'esecuzione delle sessioni di Emacs (è probabilmente il comando di compilazione più frequentemente utilizzato, anche oggi), ha senso mantenere questa stringa costante e statica, per evitare inutili riassegnazioni e garbage collection.
Questo concetto di archiviazione puro è anche il motivo per cui la modifica dei .elfile di alcuni (in particolare incorporati nelle biblioteche startup.el, subr.ele altri) non ha alcun effetto: Emacs realtà mai carichi i file di origine di queste librerie. Invece, ha il suo codice byte incorporato nel suo binario e li carica da un'area di memoria speciale.