quickjs
Our great sponsors
proposal-operator-overloading | quickjs | |
---|---|---|
9 | 65 | |
612 | 7,641 | |
1.5% | - | |
3.1 | 9.1 | |
4 months ago | 4 days ago | |
JavaScript | C | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
proposal-operator-overloading
-
I think Zig is hard but worth it
There's a not-very-active proposal to add operator overloading to JS which takes a similar scoped approach:
https://github.com/tc39/proposal-operator-overloading
-
Applying common operators (like +, *, -, /, etc.) to objects/arrays/lists?
There's a proposal to add operator overloading to the language, but AFAIK it never landed.
-
Immutability: what a monster...
An example of it would be the operator overloading proposal https://github.com/tc39/proposal-operator-overloading that would allow overriding === and it would also solve in one shot many other problems (like numeric types extension, pipeable operator, and all the ones listed in the proposal).
-
Is there a way to access native operations via class methods?
Kind of but not really. There is the concept of operator overloading that would let you specify how to handler uses of operators like - and + with your class instances, but this is not yet officially supported in JavaScript. There is an operator overloading proposal to maybe add it in the future (and if you're using QuickJS that has support built in), but right now there's not a whole lot you can do.
- Proposed Operator Overloading in JavaScript
-
Extending Built-ins with ES6 Classes
Though this is not possible now since operators always work on primitive values, there is a proposal for operator overloading that could potentially allow us to use operators on objects in the future. It's still very early, so its not something you can use today (or anytime soon, if ever at all). In the meantime, you'll need to use method calls to perform these kinds of operations.
-
[AskJS] Why does our community hate Operator Overloading?
I'm not sure who hates it, but I have seen it abused (which people don't like). But, quickjs has it now, and there's a proposal to have it added to the JS spec. The proposal is only stage 1, so who knows what will happen with it or when, but its not counted out.
-
ES2022 feature: class static initialization blocks
https://github.com/tc39/proposal-operator-overloading
There are still a couple issues that have to be solved. m2c: I hope that won't get to stage 3, though I like operator overloading in general, I think it's something that will complicate JS even more.
- TC39 proposal: operator overloading in JavaScript
quickjs
-
Show HN: Happy Pi day with this PWA to cut 100k Pi digits offline
It uses service workers to cache static files, by the time it opens up you already free to be offline, try toggle network switch to verify.
It has download link at bottom of the about page ([accdoo.app/about]) which you could then self host it by dropping into any static hosting services.
btw, the Pi feature was by-product from the original App but I won't expand here, if you'd like to learn more, please checkout its two Show HN post (39115559 and 39138957) previously.
[wiki]: https://en.wikipedia.org/wiki/Chudnovsky_algorithm
[quickjs/pi]: https://bellard.org/quickjs/pi.html
[pi_bigint.js]: https://github.com/bellard/quickjs/blob/master/examples/pi_b...
[accdoo.app/about]: https://accdoo.app/about#releases
[39115559]: https://news.ycombinator.com/item?id=39115559
[39138957]: https://news.ycombinator.com/item?id=39138957
-
Ask HN: C/C++ plugin make JavaScipt end up with C/C++ binary?
Just go with quickjs, I think this is what you are looking for.
https://bellard.org/quickjs/
- Show HW: accdoo cipher web app now fused with offline Pi cutter (100k digits)
- QuickJS JavaScript Engine
-
A list of JavaScript engines, runtimes, interpreters
QuickJS
-
Can you make your own JavaScript by implementing ECMAScript standard?
I think QuickJS, written in C, is a user-"friendly" starting point for implementing ECMA-262. Documentation QuickJS Javascript Engine.
-
New QuickJS Release
There is a readme on the project's main page: https://bellard.org/quickjs/
The newsworthy bit here is that the activity seemed to have stalled for year or two and now Fabrice pushed a few fixes and made a new release.
-
GitHub
Just to demonstrate GitHub repositories do not necessarily reflect upon a programmers' body of work, Fabrice Bellard has one (1) repository published on GitHub, quickjs. Compare the list of work on Bellard's home page https://bellard.org/.
-
WinterJS
> I am still confused, it's a JavaScript runtime intended to be deployed to JavaScript/Wasm runtimes?
Seemingly.
> Why does a JavaScript runtime need a JavaScript runtime?
Because if you want to create a Service Worker server for CloudFlare Workers and other JavaScript/Wasm runtimes, that's the only option for doing that AFAIK.
FWIW, this isn't a new idea. For example, Figma uses QuickJS (https://bellard.org/quickjs/) for their plug-in runtime: https://www.figma.com/blog/an-update-on-plugin-security/
What are some alternatives?
ohm - A library and language for building parsers, interpreters, compilers, etc.
Duktape - Duktape - embeddable Javascript engine with a focus on portability and compact footprint
match-iz - A tiny pattern-matching library in the style of the TC39 proposal.
jerryscript - Ultra-lightweight JavaScript engine for the Internet of Things.
proposal-pattern-matching - Pattern matching syntax for ECMAScript
mjs - Embedded JavaScript engine for C/C++
proposal-deep-path-properties-for-re
edex-ui - A cross-platform, customizable science fiction terminal emulator with advanced monitoring & touchscreen support.
Nuitka - Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, and 3.11. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.
esp8266-quickjs - An attempt on getting QuickJS working on ESP8266 hardware
react-native-desktop-qt - A Desktop port of React Native, driven by Qt, forked from Canonical
v8go - Execute JavaScript from Go