summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-10-08fix: define window.name (#20804)Bartek Iwańczuk
Closes https://github.com/denoland/deno/issues/20750 This matches what browsers do: https://developer.mozilla.org/en-US/docs/Web/API/Window/name In the future we might want to change the behavior to actually update the process name, but that needs a bit of discussion regarding if it needs a permission flag (that would make polyfiling `process.title` setter really easy too).
2023-10-08refactor: migrate last tsc op to op2 macro (#20816)Bartek Iwańczuk
2023-10-08bench: fix ops benchmarks (#20830)Bartek Iwańczuk
https://github.com/denoland/deno/pull/20808 broke benchmarks, this commit should fix it.
2023-10-08fix(ext/ffi): use anybuffer for op_ffi_ptr_of (#20820)Matt Mastracci
Fixes #20817
2023-10-08fix(node/buffer): utf8ToBytes should return a Uint8Array (#20769)Aapo Alasuutari
2023-10-07refactor: migrate more ops to op2 macro (#20808)Bartek Iwańczuk
Getting closer...
2023-10-06fix(cli): Support using both `--watch` and `--inspect` at the same time (#20660)Jesper van den Ende
Fixes #20525
2023-10-06feat(unstable): Await return from `Jupyter.display` (#20807)Trevor Manz
Allows `Jupyter.display` to return a promise. Example: ```javascript class WikiPage { constructor(public name) {} async [Symbol.for("Jupyter.display")]() { let response = await fetch("https://en.wikipedia.org/wiki/" + this.name); return { "text/html": await response.text() } } } new WikiPage("Deno_(software)") ```
2023-10-06perf(ext/web): optimize structuredClone without transferables (#20730)Marcos Casagrande
This PR optimizes `structuredClone` when it's called without transferables. ### Benchmarks **main** ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.37.1 (x86_64-unknown-linux-gnu) benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------------------- ----------------------------- structuredClone object 1.64 µs/iter 611,086.0 (1.58 µs … 1.84 µs) 1.66 µs 1.84 µs 1.84 µs structuredClone transferables 2.82 µs/iter 354,281.4 (2.78 µs … 2.92 µs) 2.84 µs 2.92 µs 2.92 µs ``` **this PR** ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.37.1 (x86_64-unknown-linux-gnu) structuredClone object 1 µs/iter 998,383.5 (971.28 ns … 1.2 µs) 1 µs 1.2 µs 1.2 µs structuredClone transferables 2.82 µs/iter 355,087.5 (2.7 µs … 3.07 µs) 2.83 µs 3.07 µs 3.07 µs ``` ```js Deno.bench("structuredClone object", () => { structuredClone({ foo: "bar" }); }); Deno.bench("structuredClone transferables", () => { const buf = new Uint8Array([97]); structuredClone(buf, { transfer: [buf.buffer], }); }); ```
2023-10-06fix(jupyter): Rename logo assets so they are discoverable (#20806)Trevor Manz
Changes logo prefix from `icon-*` to `logo-*` so they are correctly discovered by Jupyter.
2023-10-06fix(lsp): percent-encode host in deno: specifiers (#20811)Nayeem Rahman
2023-10-06refactor: migrate ext/node/ops to op2 (#20805)Bartek Iwańczuk
2023-10-05feat(jupyter): support Deno.test() (#20778)Nayeem Rahman
2023-10-05refactor(npm): add referrer when resolving npm package sub path from deno ↵David Sherret
module (#20800) Adds a `referrer` parameter to this function instead of using a fake one.
2023-10-05chore: update to Rust 1.73 (#20781)林炳权
2023-10-05fix(ext/node): implement uv.errname (#20785)Divy Srivastava
Fixes https://github.com/denoland/deno/issues/20617
2023-10-05fix(ext/formdata): support multiple headers in FormData (#20801)Marcos Casagrande
Fixes https://github.com/denoland/deno/issues/20793
2023-10-05chore(ext/ffi): migrate from op -> op2 for ffi (#20509)Matt Mastracci
Migrate to op2. Making a few decisions to get this across the line: - Empty slices, no matter where the come from, are null pointers. The v8 bugs (https://bugs.chromium.org/p/v8/issues/detail?id=13489) and (https://bugs.chromium.org/p/v8/issues/detail?id=13488) make passing around zero-length slice pointers too dangerous as they might be uninitialized or null data. - Offsets and lengths are `#[number] isize` and `#[number] usize` respectively -- 53 bits should be enough for anyone - Pointers are bigints. This is a u64 in the fastcall world, and can accept Integer/Int32/Number/BigInt v8 types in the slow world.
2023-10-05refactor: rewrite several extension ops to op2 (#20457)Bartek Iwańczuk
Rewrites following extensions: - `ext/web` - `ext/url` - `ext/webstorage` - `ext/io` --------- Co-authored-by: Matt Mastracci <matthew@mastracci.com>
2023-10-05refactor(test): support custom writer in PrettyTestReporter (#20783)Nayeem Rahman
2023-10-05docs: update alternative APIs for `write()`, `writeSync()`, `read()` and ↵Asher Gomez
`readSync()` (#20792) Closes #20701
2023-10-04refactor(node): combine node resolution code for resolving a package subpath ↵David Sherret
from external code (#20791) We had two methods that did the same functionality.
2023-10-05fix(lsp): show diagnostics for type imports from untyped deps (#20780)Nayeem Rahman
2023-10-04refactor: rewrite websocket to use op2 macro (#20140)Divy Srivastava
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-10-04fix(jupyter): keep `this` around (#20789)Kyle Kelley
This fixes #20767. We were losing `this` and then when an exception was happening, it didn't show up in the output because we weren't bubbling up exceptions from within a user defined function for displaying. I thought about doing a `.call(object)` but didn't want to get in the way of a bound `this` that a user or library was already putting on the function.
2023-10-04refactor: use deno_core::FeatureChecker for unstable checks (#20765)Bartek Iwańczuk
2023-10-04feat(jupyter): send binary data with `Deno.jupyter.broadcast` (#20755)Trevor Manz
Adds `buffers` to the `Deno.jupyter.broadcast` API to send binary data via comms. This affords the ability to send binary data via websockets to the jupyter widget frontend.
2023-10-04feat(unstable): add unix domain socket support to Deno.serve (#20759)Yoshiya Hinosawa
2023-10-03refactor(npm): break up `NpmModuleLoader` and move more methods into the ↵David Sherret
managed `CliNpmResolver` (#20777) Part of https://github.com/denoland/deno/issues/18967
2023-10-03chore: upgrade deno_core to 0.220.0 (#20766)Bartek Iwańczuk
2023-10-03fix(npm): upgrade to deno_npm 0.15.2 (#20772)David Sherret
* fix: handle optional deps not found in dependencies map (https://github.com/denoland/deno_npm/pull/38) * fix: resolve a version requirement to the latest dist tag if it matches (https://github.com/denoland/deno_npm/pull/37) Closes #20771
2023-10-02refactor(npm): make `NpmCache`, `CliNpmRegistryApi`, and `NpmResolution` ↵David Sherret
internal to `npm::managed` (#20764)
2023-10-02fix(ext/node): don't call undefined nextTick fn (#20724)Luca Casonato
The `process` global is not defined in this file. Fixes #20441 --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-10-02refactor(lsp): clean up tsc requests (#20743)Nayeem Rahman
2023-10-02perf(ext/web): optimize DOMException (#20715)Marcos Casagrande
This PR optimizes `DOMException` constructor increasing performance of all Web APIs that throw a `DOMException` (ie: `AbortSignal`) **main** ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.37.1 (x86_64-unknown-linux-gnu) new DOMException() 9.66 µs/iter 103,476.8 (8.47 µs … 942.71 µs) 9.62 µs 11.29 µs 14.04 µs abort writeTextFileSync 16.45 µs/iter 60,775.5 (13.65 µs … 1.33 ms) 16.39 µs 20.59 µs 24.12 µs abort readFile 16.25 µs/iter 61,542.2 (15.12 µs … 621.14 µs) 16.18 µs 19.59 µs 22.33 µs ``` **this PR** ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.37.1 (x86_64-unknown-linux-gnu) benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------------- ----------------------------- new DOMException() 2.37 µs/iter 421,657.0 (2.33 µs … 2.58 µs) 2.37 µs 2.58 µs 2.58 µs abort writeTextFileSync 7.1 µs/iter 140,760.1 (6.94 µs … 7.68 µs) 7.13 µs 7.68 µs 7.68 µs abort readFile 5.48 µs/iter 182,648.2 (5.3 µs … 5.69 µs) 5.56 µs 5.69 µs 5.69 µ ``` ```js Deno.bench("new DOMException()", () => { new DOMException(); }); Deno.bench("abort writeTextFileSync", () => { const ac = new AbortController(); ac.abort(); try { Deno.writeTextFileSync("/tmp/out", "x", { signal: ac.signal }); } catch {} }); Deno.bench("abort readFile", async () => { const ac = new AbortController(); ac.abort(); try { await Deno.readFile("/tmp/out", { signal: ac.signal }); } catch {} }); ```
2023-09-30refactor(npm): create `cli::npm::managed` module (#20740)David Sherret
Creates the `cli::npm::managed` module and starts moving more functionality into it.
2023-09-30perf(node): use faster utf8 byte length in Buffer#from (#20746)Divy Srivastava
Use the `core.byteLength` op for string utf8 length calculation in `node:buffer` ``` # This patch file:///Users/divy/gh/deno/buffer.mjs benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------- ----------------------------- Buffer#from 272.11 ns/iter 3,675,029.3 (268.41 ns … 301.15 ns) 271.62 ns 295.5 ns 301.15 ns # Deno 1.37.1 file:///Users/divy/gh/deno/buffer.mjs benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------- ----------------------------- Buffer#from 411.28 ns/iter 2,431,428.8 (393.82 ns … 439.92 ns) 418.85 ns 434.4 ns 439.92 ns ```
2023-09-30feat(node/os): Add `availableParallelism` (#20745)Rui He
2023-09-30test(node_compat): add `test-http-url.parse*` (#20458)Hirotaka Tagawa / wafuwafu13
Add `test-http-url.parse*` tests for Node compat.
2023-09-30feat(jupyter): send Jupyter messaging metadata with `Deno.jupyter.broadcast` ↵Trevor Manz
(#20714) Exposes [`metadata`](https://jupyter-client.readthedocs.io/en/latest/messaging.html#metadata) to the `Deno.jupyter.broadcast` API. ```js await Deno.jupyter.broadcast(msgType, content, metadata); ``` The metadata is required for [`"comm_open"`](https://github.com/jupyter-widgets/ipywidgets/blob/main/packages/schema/messages.md#instantiating-a-widget-object-1) for with `jupyter.widget` target.
2023-09-29feat(lsp): jupyter notebook analysis (#20719)Nayeem Rahman
2023-09-29fix(ext/kv): send queue wake messages accross different kv instances (#20465)Igor Zinkovsky
fixes #20454 Current KV queues implementation assumes that `enqueue` and `listenQueue` are called on the same instance of `Deno.Kv`. It's possible that the same Deno process opens multiple KV instances pointing to the same fs path, and in that case `listenQueue` should still get notified of messages enqueued through a different KV instance.
2023-09-29refactor(cli): make `CliNpmResolver` a trait (#20732)David Sherret
This makes `CliNpmResolver` a trait. The terminology used is: - **managed** - Deno manages the node_modules folder and does an auto-install (ex. `ManagedCliNpmResolver`) - **byonm** - "Bring your own node_modules" (ex. `ByonmCliNpmResolver`, which is in this PR, but unimplemented at the moment) Part of #18967
2023-09-28refactor(ext/node): remove dependency on deno_npm and deno_semver (#20718)David Sherret
This is required from BYONM (bring your own node_modules). Part of #18967
2023-09-28fix(jupyter): more robust Deno.jupyter namespace (#20710)Bartek Iwańczuk
2023-09-27fix(upgrade): use tar.exe to extract on Windows (#20711)David Sherret
This is what we do for deno install, so it should be fine here https://github.com/denoland/deno_install/pull/219 Closes https://github.com/denoland/deno/issues/20683
2023-09-27chore: add back dotcom step to release (#20713)David Sherret
Accidentally removed in https://github.com/denoland/deno/commit/69b7166c20b47d320fc85e33dca9414c92ec9c6f
2023-09-27chore(ext/ffi): migrate part of FFI to op2 (#20699)Matt Mastracci
2023-09-27fix(ext/node): fix TypeError in Buffer.from with base64url encoding. (#20705)Chen Su
For the following example, if I set the encoding to `base64url`, it'll throw an unexpected TypeError: ```ts import { Buffer } from "node:buffer"; Buffer.from("IntcImhlbGxvXCI6XCJoZGQvZStpXCJ9Ig", "base64url").toString(); // error: Uncaught TypeError: src.subarray is not a function // const buf = Buffer.from( // ^ // at blitBuffer (ext:deno_node/internal/buffer.mjs:1779:15) // at Uint8Array.base64urlWrite (ext:deno_node/internal/buffer.mjs:691:10) // at Object.write (ext:deno_node/internal/buffer.mjs:2195:11) // at Uint8Array.write (ext:deno_node/internal/buffer.mjs:794:14) // at fromString (ext:deno_node/internal/buffer.mjs:214:22) // at _from (ext:deno_node/internal/buffer.mjs:119:12) // at Function.from (ext:deno_node/internal/buffer.mjs:157:10) // at file:///Users/foodieats/temp/buffer1.ts:3:20 ``` The error caused by `base64urlWrite` function, it should call `forgivingBase64UrlDecode` not `forgivingBase64UrlEncode` Also fixed #20563 .
2023-09-27fix(cli): panic with __runtime_js_sources (#20704)Luca Casonato
Also a drive-by cleanup elsewhere (removing unused enum). Fixes #20702