Commit graph

43 commits

Author SHA1 Message Date
Bartek Iwańczuk e7abb705f9
Revert "chore: update deno_std submodule (#20994)" (#21001)
This reverts commit 6e2abb2b13.
2023-10-28 01:24:37 +00:00
Bartek Iwańczuk 6e2abb2b13
chore: update deno_std submodule (#20994) 2023-10-27 10:34:30 -04:00
Matt Mastracci 64045ebc7a
chore(cli): use NPM_CONFIG_REGISTRY for all tests (#20320)
We never want tests to hit the real npm registry because this causes
test flakes. In addition, we set a sentinal "unset" value for
`NPM_CONFIG_REGISTRY` to ensure that all tests requiring npm go through
the test server.
2023-08-29 13:02:54 -06:00
Bartek Iwańczuk 69387f0b0c
fix(node): don't print warning on process.dlopen.flags (#20124)
Closes https://github.com/denoland/deno/issues/20075
2023-08-10 20:19:20 +02:00
Bartek Iwańczuk 5919f31891
fix(napi): update env_test.js (#19876) 2023-07-19 12:36:52 +02:00
Bartek Iwańczuk 7e1218cd8f
fix(node): add process.dlopen API (#19860)
Fixes https://github.com/denoland/deno/issues/19830
2023-07-18 15:13:17 +02:00
Martin Fischer 801b9ec62d
chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
Bartek Iwańczuk e95f098ae3
fix(napi): properly handle arguments in napi_get_cb_info (#19269)
Closes https://github.com/denoland/deno/issues/17213
2023-05-26 05:02:12 +00:00
Bartek Iwańczuk 512d5337c4
fix(napi): clear currently registering module slot (#19249)
This commit fixes problem with loading N-API modules that use 
the "old" way of registration (using "napi_module_register" API).
The slot was not cleared after loading modules, causing subsequent
calls that use the new way of registration (using 
"napi_register_module_v1" API) to try and load the previous module.

Ref https://github.com/denoland/deno/issues/16460

---------

Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2023-05-26 10:10:17 +05:30
Bartek Iwańczuk e56695daa8
fix(napi): add napi_async_init and napi_async_destroy (#19234)
We don't have support for "AsyncContext" in "node:async_hooks" 
module, so these two APIs are just noops.

Towards https://github.com/denoland/deno/issues/18610.
2023-05-24 15:41:43 +02:00
Bartek Iwańczuk 6255cf4642
chore: add tests for N-API symbol (#19205) 2023-05-21 13:14:48 -06:00
Divy Srivastava c3f7e6ed6e
fix(cli/napi): handle finalizers (#19168)
Fixes https://github.com/denoland/deno/issues/17325
2023-05-18 19:15:47 +05:30
Bartek Iwańczuk 9dc3ae8523
fix(napi): BigInt related APIs (#19174)
Doesn't make the API bullet-proof and there are some TODOs left,
but greatly improves the situation. Tests were ported from Node.js.

Closes https://github.com/denoland/deno/issues/18276.
2023-05-18 12:49:56 +02:00
Bartek Iwańczuk 798c1ad0f1
perf: use jemalloc as global allocator (#18957)
Follow up to https://github.com/denoland/deno/pull/18875 that enables
`jemalloc` as a global allocator for the Deno CLI.
2023-05-03 00:36:33 +02:00
Bartek Iwańczuk 683dbd7f3b
Revert "refactor: don't expose Deno[Deno.internal].core namespace" (#18881)
Also conditionally disabled one test if there's not enough space on
device.
2023-04-28 00:37:03 +02:00
Bartek Iwańczuk 14aaa73c02
refactor: don't expose Deno[Deno.internal].core namespace (#18816) 2023-04-26 19:57:38 +02:00
Bartek Iwańczuk b3c85c3548
feat(node): stabilize Node-API (#17553)
This commit stabilizes Node-API, the "--unstable" flag is no longer
required to load native extensions. "--allow-ffi" permission is still 
required to load them.
2023-02-14 15:53:00 +01:00
Divy Srivastava 39f131cd76
fix(cli/napi): correct name handling in napi property descriptor (#17716)
Fixes https://github.com/denoland/deno/issues/17712
2023-02-10 21:46:56 +05:30
Divy Srivastava 4baaa246a2
fix(cli/napi): handle all property variants in napi_define_properties (#17680)
Fixes https://github.com/denoland/deno/issues/17509

This fixes the bug that blocked loading `fsevents` in Deno.
2023-02-10 12:50:47 +00:00
Divy Srivastava 524bccdf6a
fix(napi): return node globalThis from napi_get_global (#17613)
Fixes https://github.com/denoland/deno/issues/17587
2023-02-01 15:41:04 +01:00
David Sherret f5840bdcd3
chore: upgrade to Rust 1.67 (#17548)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-01-27 10:43:16 -05:00
Bartek Iwańczuk abd9610530
refactor: remove Deno.core (#16881)
This commit removes "Deno.core" namespace. It is strictly private API
that has no stability guarantees, we were supposed to remove it long time ago.

Co-authored-by: Yoshiya Hinosawa <stibium121@gmail.com>
2023-01-24 18:54:10 +01:00
Divy Srivastava cd19231306
fix(napi): improve napi_adjust_external_memory (#17501)
<!--
Before submitting a PR, please read http://deno.land/manual/contributing

1. Give the PR a descriptive title.

  Examples of good title:
    - fix(std/http): Fix race condition in server
    - docs(console): Update docstrings
    - feat(doc): Handle nested reexports

  Examples of bad title:
    - fix #7123
    - update docs
    - fix bugs

2. Ensure there is a related issue and it is referenced in the PR text.
3. Ensure there are tests that cover the changes.
4. Ensure `cargo test` passes.
5. Ensure `./tools/format.js` passes without changing files.
6. Ensure `./tools/lint.js` passes.
7. Open as a draft PR if your work is still in progress. The CI won't
run
   all steps, but you can add '[ci]' to a commit message to force it to.
8. If you would like to run the benchmarks on the CI, add the 'ci-bench'
label.
-->
2023-01-23 19:00:01 +05:30
Divy Srivastava c3e0b12c72
fix(napi): handle return value from initializer (#17502)
Fixes https://github.com/denoland/deno/issues/17349
2023-01-23 18:59:46 +05:30
Divy Srivastava b96bbc32c8
fix(napi): improve napi_is_detached_arraybuffer (#17498) 2023-01-23 14:22:18 +05:30
Luke Channings 1a792f8805
fix(napi) use c_char instead of hardcoding i8 to avoid incompatibility with aarch64 (#17458)
Quick one, compatibility fix for [aarch64
builds](https://github.com/LukeChannings/deno-arm64).
2023-01-17 10:57:44 -05:00
Divy Srivastava d5634164cb
chore: use rustfmt imports_granularity option (#17421)
Closes https://github.com/denoland/deno/issues/2699
Closes https://github.com/denoland/deno/issues/2347

Uses unstable rustfmt features. Since dprint invokes `rustfmt` we do not
need to switch the cargo toolchain to nightly. Do we care about
formatting stability of our codebase across Rust versions? (I don't)
2023-01-14 23:18:58 -05:00
Bartek Iwańczuk df8bfa26be
fix(napi): functions related to errors (#17370)
This commits fixes various NAPI functions related to creation and
throwing of errors.
2023-01-15 09:06:55 +05:30
Bartek Iwańczuk b4ce48c80a
fix(napi): correct arguments for napi_get_typedarray_info (#17306) 2023-01-14 13:00:48 +00:00
Bartek Iwańczuk 225114166a
fix(napi): allow cleanup hook to remove itself (#17402)
This commit fixes "cleanup hooks" in NAPI integration in two ways:
- don't hold to RefCell's borrow while iterating over hooks
- allow a hook to remove itself when being called
2023-01-13 22:17:25 +01:00
Bartek Iwańczuk 291dcc31f7
fix(napi): date and unwrap handling (#17369) 2023-01-13 12:53:45 +01:00
Yiyu Lin a00e432297
chore: add copyright_checker tool and add the missing copyright (#17285) 2023-01-13 16:51:32 +09:00
Divy Srivastava dd2829be0c
fix(napi): Implement napi_threadsafe_function ref and unref (#17304)
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-01-12 13:47:55 +01:00
Bartek Iwańczuk d0a53c3ce5
refactor(napi): Cleanup tests (#17347) 2023-01-11 15:47:26 +01:00
Bartek Iwańczuk 14ada3dce2
fix(napi): support for env cleanup hooks (#17324)
This commit adds support for "napi_add_env_cleanup_hook" and
"napi_remove_env_cleanup_hook" function for Node-API.
2023-01-10 19:15:10 +01:00
Bartek Iwańczuk 0329bc69da
fix(napi): handle static properties in classes (#17320)
Adds support for static properties when using "napi_define_class".
2023-01-10 15:35:46 +01:00
David Sherret 10e4b2e140
chore: update copyright year to 2023 (#17247)
Yearly tradition of creating extra noise in git.
2023-01-02 21:00:42 +00:00
Leo Kettmeir 13e3acf71d
chore: workspace inheritance (#16343) 2022-11-22 21:07:35 +01:00
Marcos Casagrande 207dd8d111
fix(napi): fix is_detached_arraybuffer (#16478) 2022-10-30 13:13:46 -04:00
Luke Channings fa22956a86
refactor(build): better handle old glibc (#16238)
Follow-up to #16208.

- Refactors build.rs behaviour to use `-exported_symbols_list` /
`--export-dynamic-symbol-list`
- Since all build systems now rely on a symbols list file, I have added
`generate_exported_symbols_list`, which derives the symbol list file
depending on the platform, which makes `tools/napi/generate_link_win.js`
redundant.
- Fixes a missed instance of `i8` being used instead of `c_char`

Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
2022-10-15 20:51:04 +05:30
Luke Channings a2488ae792
fix(npm): support compiling on linux/aarch64 (#16208)
Changes introduced in #13633 have broken the ability to compile for
linux/aarch64 - specifically the use of a `i8` as a char type, which is
an `u8` on linux/aarch64.

This PR:
- Replaces instances of `i8` with the architecture-aware wrapper type
`c_char`
- Skips the use of `--export-dynamic-symbol` on linux-aarch64, because
the target environments often rely on older libc/binutils versions
2022-10-10 07:59:31 +05:30
Divy Srivastava e136bd86b3
perf(napi): optimize primitive napi functions (#16163)
This optimization applies on `napi_get_undefined`, `napi_get_null` &
`napi_get_boolean`.

```
# main

benchmark               time (avg)             (min … max)       p75       p99      p995
---------------------------------------------------------- -----------------------------
warmup              482.55 ps/iter   (462.5 ps … 15.67 ns)    475 ps    525 ps  829.1 ps
napi_get_undefined   25.07 ns/iter   (24.03 ns … 36.87 ns)  25.37 ns  27.09 ns  34.85 ns
```

```
# This patch

benchmark               time (avg)             (min … max)       p75       p99      p995
---------------------------------------------------------- -----------------------------
warmup              484.78 ps/iter    (462.5 ps … 14.4 ns)    475 ps  554.1 ps  583.3 ps
napi_get_undefined   15.52 ns/iter   (15.35 ns … 22.14 ns)  15.41 ns  17.18 ns  20.02 ns
```
2022-10-07 16:24:01 +05:30
Divy Srivastava 0b016a7fb8
feat(npm): implement Node API (#13633)
This PR implements the NAPI for loading native modules into Deno. 

Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
Co-authored-by: DjDeveloper <43033058+DjDeveloperr@users.noreply.github.com>
Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
2022-10-05 19:36:44 +05:30