Capsuleer,
EVE continua ad evolversi, come parte dell'iniziativa EVE Forever, ed è tempo di puntare i riflettori sul codice stesso!
Dietro ogni salto di gate, ordine di mercato e combattimento di flotte in EVE Online, c'è una grande quantità di Python. Ha gestito New Eden per più di due decenni e ora inizia la transizione a Python 3. Per te, ciò significa strumenti migliori per correggere i bug prima, spazio per nuove funzionalità ed EVE più veloce nel tempo.
La definizione di successo per questa migrazione è semplice: dovrebbe essere completamente impercettibile, a parte il momento occasionale in cui qualcosa funziona più agevolmente.
Molti di voi hanno già testato i nostri primi passi su Singularity e tali modifiche sono state implementate oggi. Questo è solo l’inizio di una lunga strada da percorrere.
Una base di codici più vecchia di alcuni di voi
EVE è stato lanciato nel 2003, basato su Stackless Python, una versione di Python i cui "tasklet" leggeri consentono a un singolo nodo server di destreggiarsi tra migliaia di piloti contemporaneamente. Fenris Creations non si è limitata ad adottare Stackless; è diventato uno dei suoi contributori più significativi.
Alcuni di voi potrebbero ricordare l'aggiornamento a Stackless Python 2.5 nel 2007, quindi a Stackless Python 2.7 in 2010. Quella è stata l'ultima volta che EVE ha cambiato la sua versione Python. Python 2.7 ha raggiunto la fine ufficiale del suo ciclo di vita nel 2020, il resto del mondo del software è andato avanti ed è nata un'intera generazione di capsuleer, andata a scuola e iniziato a pilotare fregate mentre EVE è rimasta nella stessa versione linguistica. Era sufficientemente affidabile da non giustificare mai, fino ad ora, una migrazione ampia e potenzialmente rischiosa.
Sedici anni sulla stessa versione la dicono lunga su quanto bene abbia funzionato. Il motore Carbon ha aiutato moltissimo, ma anche ha fatto passi avanti!
Perché Python 3? Perché adesso?

La versione breve: restare su Python 2 frena sempre più EVE, e passare a Python 3 significa per te un gioco più sano e meglio supportato.
Uno dei motivi sono le prestazioni. Le recenti versioni di Python 3 hanno apportato alcune delle maggiori accelerazioni nella storia di questo linguaggio. Nel corso del tempo, ciò aprirà le porte a un’EVE più veloce, anche se è troppo presto per dire esattamente cosa significherà.
Un altro motivo è l’ecosistema. Le librerie moderne, i debugger e i profiler sono tutti creati per Python 3. Ogni anno che rimaniamo su Python 2, sempre più di essi sfuggono alla nostra portata e più dobbiamo mantenerci invece di migliorare il gioco. Strumenti migliori ci consentono di individuare e risolvere i problemi più rapidamente.
Python 3 semplifica molti degli elementi fondamentali del linguaggio.
Il testo viene gestito tramite un unico tipo di stringa coerente, rendendo la localizzazione più affidabile. I numeri interi non hanno più limiti di dimensione arbitrari e crescono automaticamente quando necessario. Anche il sistema di classi di Python è stato unificato, rimuovendo il comportamento legacy e rendendo il codice orientato agli oggetti più coerente.
Ogni personaggio, ogni punto abilità, ogni risorsa in ogni hangar, ogni ISK in ogni portafoglio è stato scritto in codice Python 2 e tutto deve essere riletto in Python 3 esattamente com'era.
Il percorso da percorrere è arduo, dobbiamo aggiornare un'enorme quantità di codice mentre EVE continua a funzionare per te, ma sappiamo che la destinazione è raggiungibile, perché EVE Frontier esegue già il nostro motore Carbon sul moderno Python 3 e funziona.
La migrazione di Frontier ha coperto dodici versioni minori di Python in una volta sola, sedici anni di evoluzione del linguaggio in un unico progetto. Tranquility ha ventitré anni di codice accumulato e, cosa più importante, ventitré anni di dati di giocatori reali, la storia dei capsuleer. E deve continuare a respirare 23,75 ore su 24.
Attento... Attento...
La base di codice EVE è composta da 2,4 milioni di righe di Python. Molti di essi sono anteriori anche a Python 2.7, scritti secondo gli standard dell'era 2.3 e 2.5 che Python 3 si rifiuta del tutto di analizzare.
Quindi come si esegue la migrazione di 2,4 milioni di righe di codice?
Con molta attenzione e in più fasi.
Alcune di queste fasi utilizzeranno strumenti sviluppati dalla comunità Python (ad esempio Python Futurize), mentre altre si concentreranno maggiormente sulle caratteristiche uniche di EVE.
Quando raggiungeremo traguardi chiave, chiederemo il tuo aiuto partecipando ai playtest su Singularity, come hai fatto a luglio, dove potremo osservare come si comportano parti del sistema aggiornato in condizioni più vicine al server Tranquility.
La prima fase, dove ci troviamo ora, rende il codice pronto per Python 3 mentre funziona ancora su Python 2.7.
Utilizziamo uno strumento chiamato Python-Future, costruito sullo stesso meccanismo di riscrittura del codice (2to3) fornito da Python stesso per facilitare esattamente questo tipo di migrazione. Applica "riparatori" automatizzati, ognuno dei quali riscrive un modello obsoleto, in una forma moderna accettata sia da Python 2.7 che da Python 3.
Una volta che tutto il codice funziona con entrambe le versioni, inizia il lavoro veramente duro: il codice funziona su entrambe, ma si comporta in modo diverso.
Misurare la montagna (e vederla restringersi)

Come fai a sapere quanto sei lontano da Python 3?
Lo misuriamo. Ognuno dei nostri circa 20.000 file Python è compilato con un vero interprete Python 2.7 e un vero interprete Python 3, perché il compilatore è la verità fondamentale per stabilire se il codice viene analizzato.
La prima scansione è stata una piacevole sorpresa: il 95,9% dei file era già compilato con entrambe le versioni. Le righe bloccanti, quelle che utilizzavano la sintassi rifiutata da Python 3, erano circa 3.300 su 2,4 milioni.
La montagna si è rivelata una collina grande e molto misurabile:
~ 1.500 dichiarazioni stampate vecchio stile,
~ 800 numeri letterali "lunghi" come 123L,
~ 600 clausole di eccezione in una sintassi deprecata prima che esistesse EVE,
50 usi di <>, un modo di scrivere "non uguale" così vecchio che molti sviluppatori Python attivi non l'hanno mai visto.
Le sfide future

L'analisi è la parte facile.
La stessa scansione conta circa 20.000 righe di codice che vengono compilate bene in entrambe le versioni ma si comportano diversamente in Python 3. L'esempio classico è la divisione: in Python 2, 1/2 è 0; mentre in Python 3 è 0.5.
In EVE, dove questi numeri potrebbero essere danni, ISK o coordinate, ciascuna di queste linee necessita di una decisione umana piuttosto che di una soluzione meccanica. Questo lavoro fa parte della Fase 2, ed è per questo che la Fase 1 viene prima: eliminare i detriti meccanici in modo che l’attenzione umana vada solo dove è necessario.
Cosa significa per te
A breve termine, nulla, e questo è previsto. I cambiamenti della Fase 1 dovrebbero essere invisibili. A lungo termine, queste sono alcune delle basi più preziose che possiamo gettare per il futuro di EVE: un interprete più veloce per alimentare i combattimenti tra flotte e gli hub di mercato, strumenti moderni che ci aiutano a trovare e correggere i bug prima e una base di codice su cui i nuovi sviluppatori possono lavorare in modo più produttivo, il che significa che le funzionalità ti raggiungono più velocemente. È l'infrastruttura per i prossimi vent'anni di EVE Online.
Grazie per averci aiutato a dimostrarlo
Non notare nulla è l’obiettivo e tu sei quello che ci aiuta a raggiungerlo.
Alla fine di luglio hai testato la prima serie di modifiche su Singularity. Grazie a tutti coloro che hanno preso parte.
Ora stiamo implementando queste modifiche su Tranquility. È qui che facciamo affidamento su di te: continua a fare quello che fai sempre e, se qualcosa non va, faccelo sapere inviando una segnalazione di bug.
Inoltre, stiamo preparando il backend della missione dell'agente per Python 3, ma non dovresti notare nulla.
Questo è solo il primo passo di molti. Eliminare i detriti meccanici è stata la parte facile. Il vero lavoro, il codice da leggere riga per riga, è ancora davanti a noi, ed è lì che avremo più bisogno di te.
Tenete d'occhio i nostri canali per futuri test. Se hai sempre desiderato dire ai tuoi colleghi di lavoro che hai contribuito a spostare EVE su Python 3, questa è la tua occasione!
Vola in sicurezza, su qualunque versione di Python ti trovi.
Fonte originale:eveonlineitalia.it— Leggi l'originale