TypeScript passa a GO

6 views
Skip to first unread message

Mario Alexandro Santini

unread,
Mar 14, 2025, 3:25:12 AMMar 14
to socr...@googlegroups.com
Ciao,

vi segnalo questa notizia.

I tool di TypeScript:
 * compilatore
 * language server

Sono in via di riscrittura in Go.

I motivi sono molti, fra cui le performance.

La nuova versione sarà più veloce e manterrà tutte le caratteristiche della precedente.

Si prevede che il porting sarà ultimato per il 2025, mentre il compilatore dovrebbe essere disponibile a breve.

Ecco un articolo che ne parla:

https://2ality.com/2025/03/typescript-in-go.html


Mario

Luca Guadagnini

unread,
Mar 17, 2025, 6:21:10 PMMar 17
to Socraten
C'è già gente che si straccia le vesti perché non è stato usato Rust, ma i motivi sono stati tutti riassunti in: pragmaticità. Il che ha senso tutto sommato.

Sono abbastanza curioso, non che abbia tutta questa simpatia per Typescript, ma il fatto che possa compilare in nativo con un GC già incluso potrebbe essere interessante.

Saluti!

Mario Alexandro Santini

unread,
Mar 18, 2025, 3:17:27 AMMar 18
to socr...@googlegroups.com
Ciao Luca,

On Mon, Mar 17, 2025 at 11:21 PM Luca Guadagnini <luca.gu...@gmail.com> wrote:
C'è già gente che si straccia le vesti perché non è stato usato Rust, ma i motivi sono stati tutti riassunti in: pragmaticità. Il che ha senso tutto sommato.



Sono abbastanza curioso, non che abbia tutta questa simpatia per Typescript, ma il fatto che possa compilare in nativo con un GC già incluso potrebbe essere interessante.

Credo ci sia un fraintendimento.
Quello che è stato riscritto in Go è il compilatore TypeScript/JavaScript.

Il risultato sarà comunque sempre JavaScript e non qualcosa tipo WASM.

Le performance di cui parlano sono relative alla fase di build e anche per lo sviluppo.

Il runtime non dovrebbe avere variazioni.

 
Saluti!


Mario

mick...@posteo.net

unread,
Mar 18, 2025, 4:30:08 AMMar 18
to socr...@googlegroups.com


On 18.03.2025 08:17, Mario Alexandro Santini wrote:
>
> Il risultato sarà comunque sempre JavaScript e non qualcosa tipo
> WASM.
>
Stavo appunto per chiedere conferma, perché per un attimo
ho pensache che, lavorando in typescript/Angular da un anno
a questa parte, non avevo capito nulla!

>
> Il runtime non dovrebbe avere variazioni.
>
Anche perché il runtime, correggetemi se sbaglio, sta nel
browser, e quindi potenzialmente cambia da utente ad utente.

--
Michele

Mario Alexandro Santini

unread,
Mar 18, 2025, 4:48:17 AMMar 18
to socr...@googlegroups.com
On Tue, Mar 18, 2025 at 9:30 AM <mick...@posteo.net> wrote:
Stavo appunto per chiedere conferma, perché per un attimo
ho pensache che, lavorando in typescript/Angular da un anno
a questa parte, non avevo capito nulla!

Ciao Michele,

il punto è che si sono moltiplicati i compilatori TypeScript per via dei problemi di performance.
Si tratta di casi dove i progetti sono molto grandi e la compilazione richiede un tempo considerevole.

Per questo sono emerse diverse soluzioni alternative al compilatore ufficiale.

Questa riscrittura è una possibile risposta a queste alternative.

Prendete queste mie personali considerazioni come una dedizione di qualcuno che segue distrattamente il settore. :)
 

Anche perché il runtime, correggetemi se sbaglio, sta nel
browser, e quindi potenzialmente cambia da utente ad utente.

Il runtime viene eseguito nel browser, corretto.
 
--
Michele


Mario 

mick...@posteo.net

unread,
Mar 18, 2025, 5:24:29 AMMar 18
to socr...@googlegroups.com
On 18.03.2025 09:48, Mario Alexandro Santini wrote:

> il punto è che si sono moltiplicati i compilatori TypeScript per via
> dei problemi di performance.
> Si tratta di casi dove i progetti sono molto grandi e la compilazione
> richiede un tempo considerevole.

Non so quale possa essere un "tempo considerevole", nel mio progetto
attuale ci mette svariatiminuti. Ordine di grandezza superiore per
eseguire la batteria di test unitari, ma questo credo vada oltre al
compilatore soltanto.

--
Michele

Mario Alexandro Santini

unread,
Mar 18, 2025, 6:56:09 AMMar 18
to socr...@googlegroups.com
On Tue, Mar 18, 2025 at 10:24 AM <mick...@posteo.net> wrote:
Non so quale possa essere un "tempo considerevole", nel mio progetto
attuale ci mette svariatiminuti. Ordine di grandezza superiore per
eseguire la batteria di test unitari, ma questo credo vada oltre al
compilatore soltanto.


Non so darti un valore.
Credo che anche nel mio caso la differenza non sarebbe molto apprezzabile.

Ma immagino in progetti con una codebase estesa e parecchi sviluppatori che continuano a fare push di modifiche che vanno integrate, la differenza la nota, anche se passano da 2 minuti a 20 secondi.


--
Michele


Mario

Luca Guadagnini

unread,
Mar 18, 2025, 7:08:06 PMMar 18
to socr...@googlegroups.com
On Tue, 18 Mar 2025 at 08:17, Mario Alexandro Santini <alexm...@gmail.com> wrote:
Ciao Luca,

On Mon, Mar 17, 2025 at 11:21 PM Luca Guadagnini <luca.gu...@gmail.com> wrote:
C'è già gente che si straccia le vesti perché non è stato usato Rust, ma i motivi sono stati tutti riassunti in: pragmaticità. Il che ha senso tutto sommato.

:)

Sì beh mi stavo riferendo al progetto di Microsoft, non altrui :) in un'intervista rilasciata è stato riportato questo:

why not Rust?

Anders: When you have a product that has been in use for more than a decade, with millions of programmers and, God knows how many millions of lines of code out there, you are going to be faced with the longest tail of incompatibilities you could imagine. So, from the get-go, we knew that the only way this was going to be meaningful was if we ported the existing code base. The existing code base makes certain assumptions -- specifically, it assumes that there is automatic garbage collection -- and that pretty much limited our choices. That heavily ruled out Rust. I mean, in Rust you have memory management, but it's not automatic; you can get reference counting or whatever you could, but then, in addition to that, there's the borrow checker and the rather stringent constraints it puts on you around ownership of data structures. In particular, it effectively outlaws cyclic data structures, and all of our data structures are heavily cyclic.

adding it all up: Go makes a lot of sense

Anders: When we go down the list, we want a language that gives us excellent optimized native code on all major platforms. We want a language that has great expressiveness in data structures, allows cyclic data structures, but also allows inline data structures like structs -- so that, you know, in JavaScript everything you do with an object is an allocation, and we would rather avoid that, especially for small objects if we can store them inline. We need automatic garbage collection, and we also needed concurrency -- and shared memory concurrency. We can talk about the distinction there, because technically JavaScript has concurrency with web workers, but it does not have shared memory concurrency. I can explain why we need that for the compiler, but that was also a must. And when you look at all of that -- and then, of course, we want good tooling (we all live in VS Code, we want excellent support in VS Code, and whatever) -- when you add all of that up, Go actually ended up coming very high on the list.

 


Sono abbastanza curioso, non che abbia tutta questa simpatia per Typescript, ma il fatto che possa compilare in nativo con un GC già incluso potrebbe essere interessante.

Credo ci sia un fraintendimento.
Quello che è stato riscritto in Go è il compilatore TypeScript/JavaScript.

Giusto, parliamo di porting del compilatore.
 

Il risultato sarà comunque sempre JavaScript e non qualcosa tipo WASM.

Le performance di cui parlano sono relative alla fase di build e anche per lo sviluppo.

Il runtime non dovrebbe avere variazioni.

 
Saluti!


Mario

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Socraten" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a socraten+u...@googlegroups.com.
Per visualizzare questa discussione, visita https://groups.google.com/d/msgid/socraten/CAMUoZedV4Dt8aPgO2nXyxOxwPtKg1aM_yK6oDuhBCQ6hiWfJkQ%40mail.gmail.com.

Mario Alexandro Santini

unread,
Mar 19, 2025, 3:18:32 AMMar 19
to socr...@googlegroups.com
On Wed, Mar 19, 2025 at 12:08 AM Luca Guadagnini <luca.gu...@gmail.com> wrote:

Sì beh mi stavo riferendo al progetto di Microsoft, non altrui :) in un'intervista rilasciata è stato riportato questo:

Che abbiano scelto Go non è un gran problema, dal mio punto di vista. La scelta del linguaggio è qualcosa che dipende da molte variabili.

In molti si sono lamentati che non fosse stato scelto C#, ad esempio.

Potrebbe esserlo per Microsoft, dato che Go è un linguaggio che è interamente controllato da Google.

Ma è plausibile che la loro versione sia interamente gestita, dato che è open source.

Recentemente ho letto una discussione di Mitchell Hasimoto (fondatore di Hasicorp: Vagrant, Terraform....), il quale si lamentava della lentezza della compilazione di Rust.

Lui non sviluppa in Rust, ma in Zig. Tuttavia, ha l'abitudine di scaricare tutte le dipendenze che utilizza con i sorgenti e buildare tutto in casa.

Non saprei dire se è lo stesso per Microsoft, in effetti la scelta di Hasimoto è alquanto estrema.


Mario

 
Reply all
Reply to author
Forward
0 new messages