1) Il multithreading è estremamente difficile e sfortunatamente il modo in cui hai presentato questa idea fino ad ora ti sta sottovalutando severamente quanto sia difficile.
Al momento, sembra che tu stia semplicemente "aggiungendo discussioni" alla lingua e ti preoccupi di come renderlo corretto e performante in seguito. In particolare:
if two tasks try to access a variable concurrently it gets marked atomic and they contend for access.
...
I agree that atomic variables won't solve everything, but working on a solution for the synchronisation problem is my next goal.
L'aggiunta di thread a Javascript senza una "soluzione per il problema di sincronizzazione" sarebbe come aggiungere numeri interi a Javascript senza una "soluzione per il problema di aggiunta". È così fondamentale per la natura del problema che non c'è praticamente nessun punto di discutere se il multithreading meriti di essere aggiunto senza una soluzione specifica in mente, indipendentemente da quanto potremmo volerlo.
Inoltre, rendere tutte le variabili atomiche è il tipo di cosa che può far sì che un programma multithread esegua peggio rispetto alla sua controparte monofore, il che rende ancora più importante testare effettivamente le prestazioni su programmi più realistici e vedi se stai guadagnando qualcosa o no.
Inoltre, non è chiaro per me se stai cercando di mantenere i thread nascosti dal programmatore node.js o se hai intenzione di esporli ad un certo punto, facendo effettivamente un nuovo dialetto di Javascript per la programmazione multithread. Entrambe le opzioni sono potenzialmente interessanti, ma sembra che tu non abbia ancora deciso quale obiettivo stai ancora cercando.
Quindi, al momento, stai chiedendo ai programmatori di prendere in considerazione il passaggio da un ambiente singletto a un nuovissimo ambiente multithreading che non ha alcuna soluzione per il problema di sincronizzazione e nessuna evidenza migliora le prestazioni del mondo reale e apparentemente nessun piano per la risoluzione questi problemi.
Questo è probabilmente il motivo per cui le persone non ti prendono sul serio.
2) La semplicità e la robustezza del loop di eventi singoli è un vantaggio enorme .
I programmatori di Javascript sanno che la lingua Javascript è "sicura" dalle condizioni di gara e da altri bug estremamente insidiosi che affliggono tutta la programmazione realmente multithread. Il fatto che abbiano bisogno di argomenti forti per convincerli a rinunciare a tale sicurezza non li rende di mentalità chiusa, li rende responsabili.
A meno che tu non sia in grado di mantenere tale sicurezza, chiunque potrebbe voler passare a un nodo con multithreading sarebbe probabilmente meglio passare a una lingua come Go progettata per le applicazioni multithread.
3) Javascript supporta già "thread in background" (WebWorkers) e programmazione asincrona senza esposizione diretta della gestione dei thread al programmatore.
Queste funzionalità risolvono già molti dei casi d'uso comuni che riguardano i programmatori Javascript nel mondo reale, senza rinunciare alla sicurezza del singolo loop eventi.
Hai in mente casi d'uso specifici che queste funzionalità non risolvono e che i programmatori Javascript vogliono una soluzione? Se è così, sarebbe una buona idea presentare il tuo node.js multithread nel contesto di quel caso d'uso specifico.
P.S. Cosa potrebbe convincere me a provare a passare a un'implementazione node.js multithread?
Scrivi un programma non banale in Javascript / node.js che pensi possa trarre beneficio dal vero multithreading. Eseguire test delle prestazioni su questo programma di esempio nel nodo normale e nel nodo con multithreading. Dimostrami che la tua versione migliora le prestazioni di runtime, la reattività e l'utilizzo di più core in misura significativa, senza introdurre bug o instabilità.
Dopo averlo fatto, penso che vedrai le persone molto più interessate a questa idea.