{"id":20147268,"url":"https://github.com/voodooattack/nexusjs","last_synced_at":"2025-05-06T20:34:14.292Z","repository":{"id":43668385,"uuid":"56258013","full_name":"voodooattack/nexusjs","owner":"voodooattack","description":"Nexus.js - The next-gen JavaScript platform","archived":true,"fork":false,"pushed_at":"2019-01-18T22:36:30.000Z","size":11785,"stargazers_count":1082,"open_issues_count":5,"forks_count":21,"subscribers_count":54,"default_branch":"master","last_synced_at":"2025-05-05T09:12:01.949Z","etag":null,"topics":["javascript","javascriptcore","multithreading","runtime","webkit"],"latest_commit_sha":null,"homepage":"http://www.nexusjs.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voodooattack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-14T17:44:44.000Z","updated_at":"2025-04-17T16:33:27.000Z","dependencies_parsed_at":"2022-09-09T09:51:27.142Z","dependency_job_id":null,"html_url":"https://github.com/voodooattack/nexusjs","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voodooattack%2Fnexusjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voodooattack%2Fnexusjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voodooattack%2Fnexusjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voodooattack%2Fnexusjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voodooattack","download_url":"https://codeload.github.com/voodooattack/nexusjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252765060,"owners_count":21800790,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","javascriptcore","multithreading","runtime","webkit"],"created_at":"2024-11-13T22:28:15.809Z","updated_at":"2025-05-06T20:34:12.441Z","avatar_url":"https://github.com/voodooattack.png","language":"C++","readme":"Nexus.js — Multi-threaded I/O for JavaScript.\n=======\n\n[![Join the chat at https://gitter.im/voodooattack/nexusjs](https://badges.gitter.im/voodooattack/nexusjs.svg)](https://gitter.im/voodooattack/nexusjs?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nNexus.js is a multi-threaded JavaScript run-time built on top of JavaScriptCore (Webkit) with a focus on high performance and dynamic scaling above all else.\n\nNexus.js uses an asynchronous, non-blocking I/O model, and a thread-pool scheduler to make the most of modern hardware concurrency.\n\nNexus.js is Promise-based and embraces ES6 in full; and as a result, it is not compatible with Node.js APIs.\n\nVisit the homepage at [nexusjs.com](http://www.nexusjs.com).\n\n## Building\n\nPlease check out the [documentation](docs/building.md) for a guide on how to build Nexus.js.\n\n## Documentation\n\nThe early documentation is available at [nexusjs.com](http://www.nexusjs.com). It will change frequently as new features are added, so keep an eye out!\n \nAlso, you can look into the [tests directory](tests/) and the [examples directory](examples/) for an insight into how to use it.\n\n## Native add-ons\n\nWhile still a big topic for debate, native add-ons should be very feasible in the future, once a proper ABI is chosen. Please discuss this [here](https://github.com/voodooattack/nexusjs/issues/4).\n\n## Contributing\n\nAll pull requests, suggestions, and questions are welcome.\n\n## Read more\n\nYou can read more on Nexus.js and the progress of development in the following articles:\n\n* [Introduction](https://medium.com/@voodooattack/multi-threaded-javascript-introduction-faba95d3bd06)\n* [Input/Output (I/O API Demonstration)](https://medium.com/@voodooattack/concurrent-javascript-part-ii-input-output-19c6dd3c6709)\n* [Events (Promise-Based Concurrent Events On A Multi-threaded Scale)](https://medium.com/@voodooattack/concurrent-javascript-part-iii-events-7cba62f385b8)\n* [Madness (Performance Comparison)](https://medium.com/@voodooattack/concurrent-javascript-part-iv-madness-edc1b8c7cc40)\n* [The Mantra (Questions and Answers)](https://medium.com/@voodooattack/concurrent-javascript-part-v-the-mantra-bbdafcac2349)\n* [Server (TCP API and Stress/Stability Testing)](https://medium.com/@voodooattack/concurrent-javascript-vi-server-9bb626f7cae1)\n* [A year's Absence (My apology for disappearing for an entire year)](https://medium.com/p/concurrent-javascript-a-years-absence-ea5ae93d3b91) \n\nNew Series:\n\n* [Introducing Nexus.js: A multi-threaded JavaScript run-time (Overview of what's been implemented so far, and a benchmark where Nexus serves 1,000 HTTP requests per second)](https://dev.to/voodooattack/introducing-nexusjs-a-multi-threaded-javascript-run-time-3g6)\n\n\n## FAQ\n\n* Will you implement `require()`?\n\n\u003e Not likely. Nexus.js will use the Promise-based `import(...)` API for dynamic loading, and otherwise use the `import` and `export` keywords for normal module loading.\n\u003e `require()` can still be implemented by a third-party in pure JavaScript of course, it just won't come built-in.\n\n* Why are you avoiding `require()`? Are you planning on breaking all backward-compatibility with Node.js?\n\n\u003e Yes. I know the decision is harsh, but it will be better in the long run.\n\u003e It will make porting libraries harder, but the result will be a pure ES6 ecosystem with ES6 modules at its core.\n\u003e This is necessary because Nexus.js is multi-threaded, and most Node.js libraries use globals in one form or another, which means they'd be broken anyway.\n\u003e While accessing globals concurrently will not corrupt them or crash the program, it will produce unexpected behaviour in any event-loop based code. Since it assumes a single-threaded environment.\n\n* How does concurrent access to variables work? Do you use a `mutex` for every variable?\n\n\u003e No, please [read the documentation](docs/architecture.md), and see [Locking in WebKit](https://webkit.org/blog/6161/locking-in-webkit/), it explains it better than I ever could.\n\n* Can Nexus.js libraries override globals?\n\n\u003e The globals are created on-demand in every context that accesses them, and this makes it impossible to replace them.\n\u003e For example, `Nexus.EventEmitter` exists in every context, but if you replace it in a library it will not affect the `Nexus.EventEmitter` available in a different library, or in the main context.\n\u003e\n\u003e I do plan on offering certain hooks for transpiling utilities and the such. If you're using Babel to transpile JSX for an isomorphic (universal) application, you need not worry.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoodooattack%2Fnexusjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoodooattack%2Fnexusjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoodooattack%2Fnexusjs/lists"}