All Projects → voodooattack → Nexusjs

voodooattack / Nexusjs

Licence: gpl-3.0
Nexus.js - The next-gen JavaScript platform

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Nexusjs

Weave
A state-of-the-art multithreading runtime: message-passing based, fast, scalable, ultra-low overhead
Stars: ✭ 305 (-71.58%)
Mutual labels:  multithreading, runtime
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-98.32%)
Mutual labels:  runtime, multithreading
Napajs
Napa.js: a multi-threaded JavaScript runtime
Stars: ✭ 8,945 (+733.64%)
Mutual labels:  multithreading, runtime
Actix Net
A collection of lower-level libraries for composable network services.
Stars: ✭ 415 (-61.32%)
Mutual labels:  multithreading, runtime
Pixivcrawleriii
A python3 crawler for crawling Pixiv ranking top and any illustrator all artworks
Stars: ✭ 38 (-96.46%)
Mutual labels:  multithreading
Autooffload.jl
Automatic GPU, TPU, FPGA, Xeon Phi, Multithreaded, Distributed, etc. offloading for scientific machine learning (SciML) and differential equations
Stars: ✭ 21 (-98.04%)
Mutual labels:  multithreading
Mintype
🍵 minimal composable type abstraction
Stars: ✭ 12 (-98.88%)
Mutual labels:  runtime
Wkwebviewjavascriptbridge
🌉 A Bridge for Sending Messages between Swift and JavaScript in WKWebViews.
Stars: ✭ 863 (-19.57%)
Mutual labels:  webkit
Autoupdate
🆙 基于MFC实现的自动更新模块
Stars: ✭ 51 (-95.25%)
Mutual labels:  multithreading
Gsysint
Golang (as of 1.12.5) runtime internals that gives you an access to internal scheduling primitives. Park Gs, read IDs. (for learning purposes)
Stars: ✭ 44 (-95.9%)
Mutual labels:  runtime
Threadpool
Modern C++ Thread Pool
Stars: ✭ 38 (-96.46%)
Mutual labels:  multithreading
Thread Loader
Runs the following loaders in a worker pool
Stars: ✭ 945 (-11.93%)
Mutual labels:  multithreading
Geomandel
Fractal generator with lots of fancy stuff
Stars: ✭ 39 (-96.37%)
Mutual labels:  multithreading
Ppipe
A simple and lightweight Rust library for making iterator pipelines concurrent
Stars: ✭ 13 (-98.79%)
Mutual labels:  multithreading
Django Access
Django-Access - the application introducing dynamic evaluation-based instance-level (row-level) access rights control for Django
Stars: ✭ 47 (-95.62%)
Mutual labels:  runtime
Lib
single header libraries for C/C++
Stars: ✭ 866 (-19.29%)
Mutual labels:  multithreading
Kevoree
The Kevoree Java project
Stars: ✭ 37 (-96.55%)
Mutual labels:  runtime
Statsviz
🚀 Instant live visualization of your Go application runtime statistics (GC, MemStats, etc.) in the browser
Stars: ✭ 1,015 (-5.41%)
Mutual labels:  runtime
Asynchronize
A declarative syntax for creating asynchronous methods.
Stars: ✭ 35 (-96.74%)
Mutual labels:  multithreading
Enkits
A permissively licensed C and C++ Task Scheduler for creating parallel programs. Requires C++11 support.
Stars: ✭ 962 (-10.34%)
Mutual labels:  multithreading

Nexus.js — Multi-threaded I/O for JavaScript.

Join the chat at https://gitter.im/voodooattack/nexusjs

Nexus.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.

Nexus.js uses an asynchronous, non-blocking I/O model, and a thread-pool scheduler to make the most of modern hardware concurrency.

Nexus.js is Promise-based and embraces ES6 in full; and as a result, it is not compatible with Node.js APIs.

Visit the homepage at nexusjs.com.

Building

Please check out the documentation for a guide on how to build Nexus.js.

Documentation

The early documentation is available at nexusjs.com. It will change frequently as new features are added, so keep an eye out!

Also, you can look into the tests directory and the examples directory for an insight into how to use it.

Native add-ons

While 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.

Contributing

All pull requests, suggestions, and questions are welcome.

Read more

You can read more on Nexus.js and the progress of development in the following articles:

New Series:

FAQ

  • Will you implement require()?

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. require() can still be implemented by a third-party in pure JavaScript of course, it just won't come built-in.

  • Why are you avoiding require()? Are you planning on breaking all backward-compatibility with Node.js?

Yes. I know the decision is harsh, but it will be better in the long run. It will make porting libraries harder, but the result will be a pure ES6 ecosystem with ES6 modules at its core. 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. 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.

  • How does concurrent access to variables work? Do you use a mutex for every variable?

No, please read the documentation, and see Locking in WebKit, it explains it better than I ever could.

  • Can Nexus.js libraries override globals?

The globals are created on-demand in every context that accesses them, and this makes it impossible to replace them. 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.

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].