Dynamic-link library: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Sezione iniziale: corretti errori grammaticali
Riga 32:
 
In [[informatica]] il '''''dynamic-link library''''' ( in acronimo '''DLL''', {{lett|libreria a collegamento dinamico}} ) è un [[Formato di file|formato]] di [[libreria condivisa]] utilizzato nei [[sistemi operativi]] di [[Microsoft]].
 
== Vantaggi e svantaggi ==
La separazione del codice in librerie a collegamento dinamico permette di suddividere il codice eseguibile in parti concettualmente separate, che verranno caricate solo se effettivamente necessarie. Inoltre, una singola libreria, caricata in memoria, può essere utilizzata da più programmi, senza la necessità di essere nuovamente caricata, il che permette di risparmiare le risorse del sistema. Questo metodo di ''loading on demand'' consente, inoltre, installazioni parziali di un sistema software, in cui sono effettivamente presenti sulla memoria di massa solo le librerie associate alle funzioni che l'utente desidera utilizzare, come selezionate in fase di installazione.
 
Un altro vantaggio è la possibilità di aggiornare un programma modificando solo le DLL: inserendo una versione diversa della DLL, che contiene ad esempio dei ''[[bug fix]]'', tutti i programmi che la usano saranno automaticamente "aggiornati" senza bisogno di essere ricompilati.
 
Il principale svantaggio è legato al fatto che una nuova versione di una DLL potrebbe effettuare dei cosiddetti ''breaking changes'', in modo volontario o, inconsapevolmente, a causa di bug nella nuova versione. Un breaking change è un cambiamento critico nel comportamento del codice della funzione che la rende non più compatibile con le convenzioni in uso (ad esempio, una funzione che prima restituiva NULL in caso di errore nei parametri e che ora setta ''[[errno]]'' e restituisce un valore non nullo). Ancora più critico il caso in cui un programma di installazione sovrascriva una DLL con una versione più vecchia. Altri problemi possono verificarsi in ambiente [[Component Object Model#Inferno delle DLL|COM]]. Questi problemi, ben noti ai programmatori [[Windows]], sono raggruppati sotto il nome di ''DLL hell'' (''inferno delle DLL'').
 
In alcuni sistemi operativi, tipicamente [[Unix]] e [[Unix-like]], è possibile far convivere versioni diverse, fra loro incompatibili, di una stessa libreria, purché siano singolarmente presenti sul [[file system]] in differenti [[Pathname|percorsi]] e sia possibile, in fase di collegamento del programma, l'identificazione della versione corretta di libreria da utilizzare. In questa maniera, i programmi collegati prima dell'installazione della nuova libreria possono continuare ad avvalersi della vecchia versione.<ref>[http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/HTML/AA-PS30D-TET1_html/peg5.html#version_check_at_load Sito HP, Manuale Digital Unix: Controllo versione librerie in fase di caricamento]</ref>
 
I [[sistema operativo|sistemi operativi]] di tipo Windows mantengono un [[backup]] delle DLL di sistema in un'apposita memoria [[cache]], nella [[directory|cartella]] nascosta <code>C:\windows\system32\dllcache</code>. Nella cartella <code>C:\windows\system32\dll</code> sono invece memorizzate le librerie in uso.
 
== Le DLL in Microsoft Windows ==