Questo miglioramento agli strumenti di sviluppo è stato introdotto in Solaris Express 8/06.
A partire da questa versione, il comportamento del comando ld quando si crea una nuova versione di un file di output esistente è stato modificato. Questo cambiamento risolve un problema esistente da tempo sul modo in cui i nuovi file di output del linker interagiscono con i programmi in esecuzione che stanno utilizzando contemporaneamente la versione meno recente di quei file.
Se il file creato da ld esiste già, il file esistente viene viene scollegato dopo che tutti i file di input sono stati elaborati. A questo punto viene creato un nuovo file con il nome specificato. Questo comportamento permette al comando ld di creare una nuova versione del file, consentendo allo stesso tempo ai processi esistenti che accedono al vecchio file di proseguire l'esecuzione. Se il vecchio file non ha altri collegamenti, lo spazio su disco del file viene liberato quando termina l'ultimo processo che fa riferimento a tale file.
Nelle versioni precedenti a Solaris Express 8/06, il file esistente non veniva scollegato ma sovrascritto. Questo approccio tuttavia poteva danneggiare eventuali processi in esecuzione che stavano utilizzando tale file.
Per maggiori informazioni, vedere la pagina man ld(1).
Il nuovo comportamento del comando ld ha un'implicazione per i file di output che dispongono di più collegamenti fisici sul file system. In precedenza, tutti i collegamenti restavano intatti e facevano riferimento al contenuto del nuovo file. Il nuovo comportamento di ld “spezza” tali collegamenti, con il risultato che solo il file di output specificato fa riferimento al nuovo file. Tutti gli altri collegamenti continuano a fare riferimento al vecchio file. Per garantire un comportamento omogeneo su tutte le versioni di Solaris, le applicazioni che si basano su più collegamenti fisici ai file di output del linker dovrebbero rimuovere e ricollegare manualmente gli altri file.