# QuickJS curated list
:::info
## Updates
**(2024/3/4)** The development continued in early 2024. On 2024/1/13 Bellard released a new version on the [project website](https://bellard.org/quickjs/).
**(2023/11/28)** There is a community-maintained fork live at https://github.com/quickjs-ng/quickjs!
:::
<!---->
> **Warning**:
> * ~~QuickJS's last official commit is on [2022/3/7](https://github.com/bellard/quickjs/commit/2788d71e823b522b178db3b3660ce93689534e6d). Consider it <del>no longer</del> community maintained.~~
> * There are a couple of sereve bugs (infinite loop, segfaults, ...) remaining unpatched.
> * ~~The latest discussions on community effort happens at
> https://github.com/bellard/quickjs/issues/188.~~
* <https://github.com/saghul/txiki.js>: full ecosystem; including a TLA patch
* <https://github.com/koush/quickjs>: vscode debugger!
* <https://github.com/hsiaosiyuan0/slowjs>: dissect; debugger & GC dump
* <https://github.com/suchipi/quickjs>: ES2022?
* <https://github.com/frida/quickjs>: A meson.build for library; some useful patches
* <https://github.com/openwebf/quickjs>:
* [poly. inline caching](https://en.wikipedia.org/wiki/Inline_caching) & column number from some china guys
# Tutorials
* https://blogs.igalia.com/compilers/2023/06/12/quickjs-an-overview-and-guide-to-adding-a-new-feature/
# Modules
* https://github.com/rsenn/qjs-modules
*
# Unpatched bugs
AFAIK...
* [[quickjs-devel] GC fails with os.setTimeout](https://www.freelists.org/post/quickjs-devel/GC-fails-with-ossetTimeout,1)
* [AddressSanitizer: stack-overflow (CVE-2023-31922)](https://github.com/bellard/quickjs/issues/178)
* [[quickjs-devel] A Bug 100% causing SIGSEGV related to async function and closure](https://www.freelists.org/post/quickjs-devel/A-Bug-100-causing-SIGSEGV-related-to-async-function-and-closure)
* [Can quickjs be used in multithreading?](https://github.com/bellard/quickjs/issues/362): to-be-fixed with <https://github.com/quickjs-ng/quickjs/commit/5ce2957e>.
# Meta
* https://github.com/kaosat-dev/awesome-quickjs
---
https://github.com/PetterS/quickjs/pull/82/files
---
## Upstream release
- [ ] new: `CONFIG_COSMO` -> `LDFLAGS`
- [x] `-fwrapv`
- [ ] `_OPT` `-fPIC`
- [x] new: `CONFIG_SHARED_LIBS` if !COSMO && !DARWIN
## Bump unicode def
<script>
<style>.markdown-body td > ul { margin-bottom: 0 }</style>
</script>
| # | Input | Output | Remark |
| -- | ----- | ------ | ------ |
| 1. | <ul><li>`unicode_gen.host.o`<li>`cutils.o`</li><li>`libunicode.c`<li>`unicode_gen_def.h`</ul> | **`unicode_gen.o`** | For cross-compilation
| 2. | **`unicode_gen.o`** | `libunicode-table.h`
| 3. | `unicode_gen_def.h` | <ul><li>`libunicode.o`<li>`.m32`, `.m32s`, `.nolto`
## Original TODOs
- [ ] If `unicode/UnicodeData.txt` exists, update `libunicode-table.h`; else copy from source tree
- [ ] handle missing `test262{,o}`
## Support table
As of https://github.com/bellard/quickjs/blob/3f81070e/Makefile:
| Feature | Makefile flag | Meson flag |
| -------- | --------------- | ----------- |
| LTO | `CONFIG_LTO` | `b_lto` == true
| Werror | `CONFIG_WERROR` | `werror` == true
| ASAN | `CONFIG_ASAN` | `b_sanitize` == `address`
| Profiler | `CONFIG_PROFILE` | `b_pgo` == `generate` or `use`?
# My fork
https://gitlab.com/qbane/quickjs