Commit graph

695 commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
482291286b Set version to 0.8.0 2024-12-23 22:45:13 +01:00
Saúl Ibarra Corretgé
e5915821be
Throw error when target executable cannot be found (#764) 2024-12-23 21:31:15 +01:00
Richard Davison
7f156b6ef9
Add typed array utility functions 2024-12-22 16:35:10 +01:00
Saúl Ibarra Corretgé
be2db73000 Use 1 MB as the default stack size
In addition:

- Move the WASI override to quickjs.c
- Allow it to be user defined

Ref: https://github.com/quickjs-ng/quickjs/issues/749#issuecomment-2540167690
2024-12-17 10:03:17 +01:00
KaruroChori
374915ad0c
Rename some internal symbols to avoid collisions 2024-12-15 11:01:16 +01:00
Saúl Ibarra Corretgé
7e292050a2 Drop checks for no longer used files 2024-12-13 09:46:57 +01:00
Cryse Hillmes
4b9d0ebdba Expose JS_IsUncatchableError API.
Very useful when handling errors.
2024-12-10 07:09:07 +01:00
Cryse Hillmes
6198fdf5d5 Update .gitignore for CMake and Visual Studio. 2024-12-10 06:46:11 +01:00
Saúl Ibarra Corretgé
53b641d4b3 Fixes timezone bias on Windows
`GetTimeZoneInformation`returns the bias in minutes already, so no need to adjust it.

Also handle the return code since it determines if the time zone is in the daylight saving range.

Ref: https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-gettimezoneinformation
Fixes: https://github.com/saghul/txiki.js/issues/325
2024-12-09 22:53:43 +01:00
Ben Noordhuis
66732e78ef
Fix break statement in presence of labels (#742)
In this snippet...

    for (;;) label: break

...the break statement jumped back to the start of the loop instead of
*out* of the loop.

Fixes: https://github.com/quickjs-ng/quickjs/issues/741
2024-12-04 23:56:52 +01:00
Oliver
ebc1a655b4
Fix linking with libm
Fixes using clang's MSVC ABI.

Fixes: https://github.com/quickjs-ng/quickjs/issues/728
2024-12-04 07:15:20 +01:00
Saúl Ibarra Corretgé
a41771f735 Update docs on standalone executables 2024-12-03 23:03:37 +01:00
Saúl Ibarra Corretgé
ce03c998c4
Add ability to create standalone binaries with qjs
Ref: https://github.com/quickjs-ng/quickjs/issues/438
Closes: https://github.com/quickjs-ng/quickjs/pull/441
2024-12-03 22:59:11 +01:00
Saúl Ibarra Corretgé
721766faa1 Fix exporting JS_GetModuleNamespace 2024-12-03 17:11:34 +01:00
Saúl Ibarra Corretgé
4968ef6e90 Add support for the "x" flag in std.open() 2024-12-03 14:59:50 +01:00
Saúl Ibarra Corretgé
92577d33ff Rename __argv to execArgv 2024-12-03 07:05:38 +01:00
Saúl Ibarra Corretgé
858fc361ff Use UCRT64 variant when making 64bit Windows releases
See: https://www.msys2.org/docs/environments/
2024-12-02 21:19:51 +01:00
Saúl Ibarra Corretgé
e77cfb67b8 Add "compile_module" and "eval_module" flags to std.evalScript
This is preparation for standalone binaries support, we need the ability
to compile source as a module and then evaluate it.
2024-12-02 21:18:08 +01:00
Saúl Ibarra Corretgé
517e9e274e Add ability to load file as Uint8Array in std.loadFile 2024-12-02 21:17:34 +01:00
Saúl Ibarra Corretgé
5cfb0ec260 Expose raw argv in CLI
`scriptArgs` only contains arguments that the CLI didn't parse, the
script might want to dig into all the arguments.
2024-12-02 21:17:16 +01:00
Saúl Ibarra Corretgé
06cd3da2fd Add INSTALL_PREFIX helper variable to Makefile 2024-12-02 21:16:53 +01:00
Saúl Ibarra Corretgé
685a9bc171 Install qjsc as part of the install target
Fixes: https://github.com/quickjs-ng/quickjs/issues/730
2024-12-02 21:16:53 +01:00
Saúl Ibarra Corretgé
fd054b7231 Fix Date.prototype.set* when date is invalid
setYear required special handing since calling date.setYear(NaN) has
specific defined behavior.
2024-11-28 20:45:54 +01:00
Saúl Ibarra Corretgé
c351133dcc Implement Error.captureStackTrace 2024-11-26 12:13:42 +01:00
Ben Noordhuis
0b0b794605
Simplify close_lexical_var (#726)
Its implementation was borderline wrong: calling it with is_arg=TRUE
segfaults because it looks up the var ref index in the wrong array.

Fortunately, there is only one caller and it only passes FALSE.
2024-11-26 00:34:46 +01:00
Saúl Ibarra Corretgé
aca0a09509 Drop GCC 4.8 CI
The workaround to use an old Node version no longer works: https://github.com/actions/checkout/issues/1590
2024-11-25 22:18:05 +01:00
Saúl Ibarra Corretgé
bda14ec9e1 Simplify release CI
In addition, run the release CI, except the upload step on each PR, to
make sure things don't break and we find about them right when doing a
release.
2024-11-25 22:09:11 +01:00
Saúl Ibarra Corretgé
f7f70fc579 Fix leak when interpreter exits due to exception
Fixes: https://github.com/quickjs-ng/quickjs/issues/720
2024-11-25 11:07:07 +01:00
Saúl Ibarra Corretgé
9631492534 Fix catching all exceptions from std.evalScript
In case of a syntax error, the function throws syncrnonously.

I'll admit I wondered when Promise.try would be useful... I guess I know
now!

Fixes: https://github.com/quickjs-ng/quickjs/issues/720#issuecomment-2495961142
2024-11-25 10:44:05 +01:00
Penner
61dae5d420 fix crash when add property maybe failed on build arguments 2024-11-25 07:59:23 +01:00
pancake
df44d66291
Do not depend on c99 for(int
NB: The project requires C11, but sicne this is the only occurrence of such kind, we let it slide. See the PR conversation.
2024-11-24 12:46:29 +01:00
Saúl Ibarra Corretgé
4ca6d9bba0
Don't share class functions across Set and Map
Map has groupBy and Set doesn't.

Fixes: https://github.com/quickjs-ng/quickjs/issues/714
2024-11-22 08:33:48 +01:00
Ben Noordhuis
81e50f3cae
Use closefrom() to close open file descriptors (#712)
Replace the naive close() loop in js_os_exec with closefrom().

On my system RLIMIT_NOFILE is set to 1 million and the delay from the
loop gets noticeable when I spawn many processes.

Use dlsym() to look up closefrom() because it's not available everywhere
(looking at you, musl.)

Fixes: https://github.com/quickjs-ng/quickjs/issues/711
2024-11-21 20:43:18 +01:00
Icemic
010777f259
Add quickjs-rusty to projects using NG 2024-11-21 14:23:15 +01:00
morn-0
769e78ff7d Remove unnecessary parameters
Enhanced msvc cross-compile compatibility
2024-11-20 15:52:52 +01:00
Saúl Ibarra Corretgé
ef15418807 Fix null deref in js_iterator_helper_next
Fixes: https://github.com/quickjs-ng/quickjs/issues/705
2024-11-19 19:21:34 +01:00
Saúl Ibarra Corretgé
0b9b6c1915
Simplify iterator helpers code, remove duplication 2024-11-18 23:43:39 +01:00
Saúl Ibarra Corretgé
55b67a6591 Bump CMake version to 3.10
Fixes a deprecation warning with new CMake versions.
2024-11-18 11:02:29 +01:00
Ben Noordhuis
f93dd58ea0 Work around msvc definition of NAN
NAN is reportedly no longer a compile-time expression in some versions
of MSVC. Work around that by minting a NaN from a uint64.

Fixes: https://github.com/quickjs-ng/quickjs/issues/622
Fixes: https://github.com/quickjs-ng/quickjs/issues/693
2024-11-18 10:49:30 +01:00
Saúl Ibarra Corretgé
bdadad97cd Add Windows SDK CI 2024-11-18 10:49:30 +01:00
Ben Noordhuis
974f40a1a8
Fix harmless -Wsign-compare warning (#699)
`sizeof(buf) == 128` so the signed comparison is always within range.
2024-11-17 23:21:03 +01:00
Ben Noordhuis
e1a0f4f1cf
Add Math.sumPrecise (#697) 2024-11-16 11:34:14 +01:00
Saúl Ibarra Corretgé
428204b802 Align JS_SetOpaque with other similar APIs
Returns < 0 on failure. Also document it in the header file.

Fixes: https://github.com/quickjs-ng/quickjs/issues/695
2024-11-16 10:35:01 +01:00
Saúl Ibarra Corretgé
18b0b9a706
Update release CI action versions
actions/upload-artifact@v3 will be deprecated soon. Migrate to v4.

Ref: https://github.com/actions/upload-artifact/blob/main/docs/MIGRATION.md
2024-11-16 09:26:06 +01:00
Saúl Ibarra Corretgé
706ba05fa6 Fix Linux release CI
There is no need to download git submodules when making releases.
2024-11-15 21:40:51 +01:00
Saúl Ibarra Corretgé
859267cc59 Set version to 0.7.0 2024-11-15 21:29:58 +01:00
Ben Noordhuis
407683bd98 Add Atomics.pause 2024-11-15 20:30:40 +01:00
bptato
42f0945114 Fix NULL deref in JS_NewRuntime2
The API allows for the malloc_usable_size callback to be NULL, so it
must not be dereferenced before the NULL check.
2024-11-15 15:02:59 +01:00
Saúl Ibarra Corretgé
284510f781 Make Iterator.from spec compliant
Create a proper wrapper around the inner iterator and proxy the calls to
next / return.
2024-11-15 13:35:25 +01:00
Saúl Ibarra Corretgé
204070a544 Fix broken link in README 2024-11-15 13:30:06 +01:00