Tu dici Visual Studio, ma penso che tu stia davvero parlando delle versioni del compilatore, quindi sto rispondendo in termini di compilatori.
Lavoravo in un'azienda che forniva sia software installabile, sia un ampio set di API per i clienti per creare i propri plugin e software contro i nostri.
Quando sono entrato, la compagnia ha ufficialmente supportato queste linee di compilazione C ++:
- GCC 3.4.6 (Red Hat Enterprise 4)
- GCC 4.1.2 (Fedora Core 7 e Red Hat Enterprise 5)
- Visual C ++ 2003 / 7.1
- Visual C ++ 2005 / 8.0
Mi sono unito ad agosto 2008, quindi Visual C ++ 2008 era uscito per circa 8-9 mesi. Non c'era davvero alcun interesse attivo nell'aggiungere / passare a nuove versioni.
Abbiamo eliminato gradualmente il supporto VC ++ 2003 perché Microsoft non l'ha supportato a lungo e i clienti erano già passati a VC ++ 2005
Per quanto riguarda il modo in cui abbiamo aggiunto il nuovo supporto per il compilatore C ++:
I driver principali non erano cose come i test di regressione, o "cosa succede se il nostro codice non viene compilato" - una parte significativa del codice è stata scritta C ++ 98 standard, e il codice moderno come ho scritto doveva compilare il compilatore con il minimo comune denominatore supportato.
Il driver principale erano i nostri clienti e le loro richieste.
All'inizio del 2009, alcuni dei nostri clienti (sto parlando di grandi appaltatori della difesa e simili) hanno espresso interesse a passare a Visual C ++ 2008 e si sono domandati quando lo avremmo supportato, perché hanno dovuto creare i loro plug-in / estensione / software contro una versione compatibile delle librerie. Penso che abbiano appena preso una decisione dall'alto e che Microsoft abbia eliminato gradualmente il supporto per Visual Studio 2005, quindi hanno dovuto spostarsi verso l'alto.
Questo ha dato il via all'inizio di noi a sviluppare il nostro software contro Visual C ++ 2008, ed è stato allora che queste preoccupazioni si sono presentate:
- test di regressione - assicurati che le persone che hanno utilizzato VC ++ 2008 abbiano codificato in modo che funzionasse con i compilatori più vecchi
- porting di ogni singola dipendenza a VC ++ 2008 - il nostro software variava dai toolkit fondamentali agli analizzatori di rete fino al software di simulazione di visualizzazione completo, quindi ci devono essere buoni motivi finanziari per spendere i soldi e il tempo per portare decine di decine di librerie dipendenti e applicazioni interne a un nuovo compilatore
- QAing (avevamo due membri del QA e la maggior parte degli sviluppatori ha fatto da sé, questo è un processo costoso)
- Costruisci il nostro software contro VC ++ 2008 - non del tutto indolore
Cose simili si sono verificate quando i clienti volevano sfruttare i sistemi di memoria alta e ci hanno chiesto quando avremmo supportato i sistemi a 64 bit: suggerire l'assalto di attività simili come sopra per la creazione di software VC ++ 2008 a 64 bit e 64 -bit Red Hat 5 software.
Sono stato coinvolto in molte di queste porte e ho modificato il codice per funzionare - Supporto a 64 bit di Visual C ++ 2005, supporto per SunStudio 11 (mi ha dato ENORME incubi), supporto per SunStudio 12 (mi ha dato anche enormi incubi).
Il che evidenzia un altro punto: spostare i compilatori non è un compito facile se i tuoi clienti richiedono alcuni compilatori ignorati - ho passato molto tempo a riscrivere parti di Boost, Qt e un sacco di altre librerie open source in particolare per far funzionare il software su alcuni compilatori. Ciò ha fatto seguito ai cambiamenti che ho dovuto apportare in un gruppo di codice sorgente della mia azienda, e stai parlando di comprendere 5 basi di codice diverse e le sottili differenze tra i compilatori. I bug del compilatore mi hanno morso un po 'di volte e sono sicuro che avrei potuto farmi un nome nella comunità di Solaris con tutte le modifiche che ho apportato per far funzionare alcuni grandi progetti open source sui compilatori Sun o IBM.
Quando sono uscito dalla società (alla fine dello scorso anno), i clienti stavano iniziando a richiedere il supporto di Visual Studio 2010 perché significava che Visual Studio 2008 sarebbe presto scomparso. Penso che la società stia iniziando a eliminare gradualmente il supporto per VS2005 e il supporto per GCC 3.4.6, poiché il supporto di Microsoft / Red Hat per quelle versioni dei loro software / sistemi operativi terminerà.
Quindi no, il codice che abbiamo scritto non sfruttava le fantastiche funzionalità di C ++, non stavamo usando std::shared_ptr
o std::unordered_map
o qualsiasi caratteristica di C ++ 11. Useremo il boost per darci quel supporto, ma dovevamo garantire che il nostro codice potesse compilare i nostri compilatori ufficialmente supportati. Soprattutto, abbiamo dovuto supportare ciò che una gran parte dei nostri clienti desiderava.