Concurrent JavaScript - the mad cousin of Node.js

So, I have been working on a multi-threaded JavaScript runtime, Nexus.js. You can think of it as the mad cousin of Node.js.

First of all: there is no event loop.

You heard that right, there is no event loop. Everything is scheduled on a thread pool, which picks “tasks” from a priority-queue and begins executing them — in parallel — on all CPU cores, simultaneously.


Internally, the Scheduler uses native C++ coroutines and all kinds of trickery to make asynchronous I/O possible.


1 Like

Deci in principiu ne-ar mai trebui un kernel scris in JS si compilat cu asm.js

1 Like

Spot on!

Sau, mai bine, un intreg sistem de operare avand doar un fire browser, un browser si un process manager… Si nimic in plus… totul in JS…

Si daca adauga si suport nativ pentru aplicatii node.js, nu m-ar mira ca lumea sa inceapa foloseasca asa ceva, doar pentru ca este in trend…

1 Like

Si tot ar fi mult mai utilizabil decat ChromeOS

2 Likes

Chestia asta mi se pare mai mult un experiment decat ceva stabil si utilizabil. Unul din selling points-urile Node-ului a fost ca nu mai avem treaba cu thread-uri, asa ca nu cred ca va avea prea mult succes (dupa cum n-a avut nici fibers de ex).

2 Likes

Pentru ca intr-adevar, 90% dintre aplicatiile create si folosite in Romania sau pretutindeni, folosesc threaduri.

end sarcasm.

2 Likes

Cel putin oricine ar putea face template-uri, cu doar niste CSS… ceea ce nu stiu sa se poata in Windows, Linux sau Mac OSX… dar, daca s-ar putea, as folosi asa ceva… din plin!

Scuze, dar nu m-am putut abtine din a reinvia topicul, cand am vazut titlul.

https://node-os.com/

NodeOS is a Node.js based operating system, built-off of the Linux kernel.
The NodeOS Project is aiming to, and can already run on some of the following platforms:

  • real hardware like desktops, laptops, or SoC’s (Raspberry Pi)
  • cloud providers like Joyent, Amazon or Rackspace
  • virtual machines like QEmu, VirtualBox, VMWare and KVM
  • PaaS providers like Heroku or Joyent’s Manta
  • container providers like Docker & Vagga

Core development is being done in layers. There could be some differences to
adjust better to each target platform, but the general structure is:

  • barebones custom Linux kernel with an initramfs that boots to a Node.js REPL
  • initramfs Initram environment to mount the users partition & boot the system
  • rootfs Read-only partition image to host Linux kernel and initramfs files
  • usersfs multi-user environment with the same behaviour of traditional OSes

I call bullshit. Incepe sa-mi fie rusine sa ma recomand developer de js.

bullshit sau nu, initiative sunt… nu neaparat ce avem nevoie, dar in mod sigur ceva ce vrem… sau asa se presupune…

Cine naiba vrea un OS pe node? Oricum kernelul e linux obviously, deci nu inteleg ce e nou aici. Ca ruleaza pe arm? Sau ca se vrea sa ruleze pe arm? Si ce ne facem cand o librarie gen leftpad nu o sa mai se updateze?

Apropo, daca dati click pe Read More, va da un 404.

1 Like

Evident, vom avea un motiv sa fortam userii sa faca update/upgrade…

seems fine

Asta cu NodeOS îmi amintește de The Birth & Death of JavaScript - Gary Bernhardt, PyCon 2014.

2 Likes

oh, so they fixed it…

There are many more topics to dive into, including:

  • starting and stopping services
  • serving Node.js apps from NodeOS
  • creating and managing users
  • GUIs and window managers

Sunt curios cum o sa arate GUIul… si cat de customizabil va fi.

Nu e ca si cum ar exista vreo 20 de desktop managers pentru linux in momentul asta, trebuie neaparat sa scriem altul nou, toata lumea vrea ca javascript sa ruleze pe orice. As vrea daca e posibil ca node.js sa ruleze si pe pacemakerul bunicului, daca se poate, sa ma pot juca snake pe el in timp ce il vizitez, asta chiar ar fi un concurrency adevarat. Sau si mai bine, sa jucam amandoi snake multiplayer pe pacemakerul lui care ruleaza node.js. Asta merita banii.

Inca un hype, am trecut prin atatatea incat nici macar nu mi se mai pare interesant, cum au fost altele. Asta e doar o discutie normala care entuziasmeaza doar populatia de pe Hacker News si atat, in celelalte comunitati de developeri prin care ma mai invart s-a discutat cam 5 minute despre si atat.

Nu inteleg care ar fi selling-pointul noului OS. Ce are el si nu are alt sistem de operare?

1 Like

Si eu simt lafel…

Il poti rula in browser… iar cu browser-ul in Electron/NW.js, poti avea OS in OS… sau doar OS in Browser… rezulta in mai multe (posibile) vulnerabilitati… fiindca acum, daca ai infectat VirtualOS-ul, HostOS-ul este pe duca… Plus ca producatorii antivirus vor avea locul de munca asigurat inca vre-o 2-3 ani…

Sunt curios cu ce va fi inlocuit… si cine va incepe inlocuirea.
(Hoping for multi-threaded client-side php)

1 Like

Chestia este ca lumea nu vrea sa ruleze totul in browser, nu e un lucru placut ca browserul (FF in cazul asta) sa ocupe ~800Mb de RAM cu doar tabul DevForum deschis, pentru ca JS-ul s-a decis sa rupa procesorul si RAM-ul in doua. Nu este normal, sincer, omul a ajuns in spatiu in masini cu resurse infinit mai mici decat ocupa un browser din zilele noastre. Browserul meu vreau doar sa … browsuie si atat, sa-mi afiseze niste pagini, nu sa imi ruleze sisteme de operare. Daca vreau masini virtuale si sisteme de operare sub sisteme de operare, am alte variante, in nici un caz browserul.

Atunci ar insemna ca toate browserele sa fie inlocuite, html-ul sa fie un fel de xhtml + sa accepte alte tag-uri cu orice nume (eventual sa aiba minim un - pentru a scapa de compatibilitatea cu versiunile viitoare), atata timp cat sunt inchise (<img /> sau <a></a>), iar din css sa fie scoase floaturile, precum si tot ce nu este display:flex; si poate fi inlocuit de flexbox).

Nu intelege gresit, nu sunt de parere ca nu avem nevoie de asa ceva, dar nu cred ca se va incumeta lumea sa faca asa ceva. Plus ca chiar daca ar fi facut un nou browser, tot ar fi nevoie de masini virtuale, ca sa se asigure securitatea… doar ca ar fi mai mici ca spatiu pe disc si resurse utilizate (fiindca nu ar trebui sa fie compatibile cu js, precum si gunoiul din (x)html-ul si css-ul actual).