summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-09-18fix(lsp): restore tsc's quick fix ordering (#20545)Nayeem Rahman
2023-09-18fix(jupyter-kernel): don't log errors from objects without a ↵Kyle Kelley
`Symbol.for("Jupyter.display")` (#20546) Fast follow up to #20537. Before: ![image](https://github.com/denoland/deno/assets/836375/8a12e83d-9008-419b-bd1f-24c0ac90afd3) After: <img width="235" alt="image" src="https://github.com/denoland/deno/assets/836375/467bf381-278e-4577-a980-7b0ddb08d2af"> --------- Co-authored-by: Matt Mastracci <matthew@mastracci.com>
2023-09-18fix(cli): fetch works in Jupyter (#20552)Matt Mastracci
An op2 needs to be overloaded by an op2, not an op1.
2023-09-18feat(unstable): package manager (#20517)David Sherret
Adds an experimental unstable built-in package manager to Deno, but it is currently not usable because the registry infrastructure hasn't been setup and it points to a non-existent url by default. The default registry url can be configured via the `DENO_REGISTRY_URL` environment variable.
2023-09-17fix(lsp): sort quickfix actions (#17221)Bartek Iwańczuk
This commit changes ordering of quickfix actions, by sorting them in following order: - TSC fixes - Deno fixes - deno_lint fixes Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
2023-09-17feat(jupyter-kernel): accept nested objects from display calls (#20537)Kyle Kelley
Closes #20535. # Screenshots ## JSON <img width="779" alt="image" src="https://github.com/denoland/deno/assets/836375/668bb1a6-3f76-4b36-974e-cdc6c93f94c3"> ## Vegalite <img width="558" alt="image" src="https://github.com/denoland/deno/assets/836375/a5e70908-6b87-42d8-85c3-1323ad52a00f"> # Implementation Instead of going the route of recursively getting all the objects under `application/.*json` keys, I went with `JSON.stringify`ing in denospace then parsing it from rust. One of the key benefits of serializing and deserializing is that non-JSON-able entries will get stripped automatically. This also keeps the code pretty simple. In the future we should _only_ do this for `application/.*json` keys. cc @mmastrac
2023-09-17build: add an environment variable to skip cross build check (#20281) (#20533)第二扩展
2023-09-17perf(ext/streams): optimize async iterator (#20541)Marcos Casagrande
This PR optimizes `ReadableStream` async iterator ### Benchmarks ```js Deno.bench("Stream - iterator", async () => { const stream = new ReadableStream({ start(controller) { controller.enqueue(new Uint8Array([97])); controller.enqueue(new Uint8Array([97])); controller.close(); }, }); for await (const chunk of stream) {} }); ``` **main** `2 chunks` ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.36.4 (x86_64-unknown-linux-gnu) benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------- ----------------------------- Stream - iterator 12.45 µs/iter 80,295.5 (10.5 µs … 281.12 µs) 12.13 µs 26.71 µs 33.63 µs ``` `20 chunks` ``` benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------- ----------------------------- Stream - iterator 32.99 µs/iter 30,312.2 (28.13 µs … 1.21 ms) 31.8 µs 81.82 µs 179.93 µs ``` --- **this PR** `2 chunks` ``` cpu: 13th Gen Intel(R) Core(TM) i9-13900H runtime: deno 1.36.4 (x86_64-unknown-linux-gnu) benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------- ----------------------------- Stream - iterator 9.37 µs/iter 106,700.8 (8.35 µs … 730.71 µs) 9.15 µs 13.12 µs 18.17 µs ``` `20 chunks` ``` benchmark time (avg) iter/s (min … max) p75 p99 p995 ----------------------------------------------------------------------- ----------------------------- Stream - iterator 16.59 µs/iter 60,270.0 (12.08 µs … 1.37 ms) 15.06 µs 83.03 µs 123.52 µs ```
2023-09-17fix(lsp): include JSON modules in local import completions (#20536)Nayeem Rahman
2023-09-17set `evalue` to a one space string for truthiness on old jupyter (#20531)Kyle Kelley
"Fixes" the exception display issue of #20524 on older versions of Jupyter that required `evalue` to be truthy. For now, until we can do proper processing of the `ExceptionDetails` this will make Jupyter Notebook 6.5.1 and below happy. This is the alternative "just work now" PR to #20530
2023-09-16docs(contributing): Fix README link to contributing docs (#20526)Juan Gonzalez
Fixing a broken link to the contributing docs
2023-09-16perf(ext/http): optimize `set_response` for small responses (#20527)Marcos Casagrande
This PR introduces an optimization to `set_response` to reduce the overhead for responses with a payload size less than 64 bytes. Performance gains are more noticeable when `is_request_compressible` enters the slow path, ie: `-H 'Accept-Encoding: unknown'` ### Benchmarks ```js Deno.serve({ port: 3000 }, () => new Response("hello")); ``` ``` wrk -d 10s --latency -H 'Accept-Encoding: slow' http://127.0.0.1:3000 ``` --- **main** ``` Running 10s test @ http://127.0.0.1:3000 2 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 44.72us 28.12us 3.10ms 97.95% Req/Sec 112.73k 8.25k 123.66k 91.09% 2264092 requests in 10.10s, 308.77MB read Requests/sec: 224187.08 Transfer/sec: 30.57MB ``` **this PR** ``` Running 10s test @ http://127.0.0.1:3000 2 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 42.91us 20.57us 2.04ms 97.36% Req/Sec 116.61k 7.95k 204.81k 88.56% 2330970 requests in 10.10s, 317.89MB read Requests/sec: 230806.32 Transfer/sec: 31.48MB ```
2023-09-16feat(lsp): include source in auto import completion label (#20523)Nayeem Rahman
2023-09-16perf: improve async op santizer speed and accuracy (#20501)Luca Casonato
This commit improves async op sanitizer speed by only delaying metrics collection if there are pending ops. This results in a speedup of around 30% for small CPU bound unit tests. It performs this check and possible delay on every collection now, fixing an issue with parent test leaks into steps.
2023-09-16feat: Add "deno jupyter" subcommand (#20337)Bartek Iwańczuk
This commit adds "deno jupyter" subcommand which provides a Deno kernel for Jupyter notebooks. The implementation is mostly based on Deno's REPL and reuses large parts of it (though there's some clean up that needs to happen in follow up PRs). Not all functionality of Jupyter kernel is implemented and some message type are still not implemented (eg. "inspect_request") but the kernel is fully working and provides all the capatibilities that the Deno REPL has; including TypeScript transpilation and npm packages support. Closes https://github.com/denoland/deno/issues/13016 --------- Co-authored-by: Adam Powers <apowers@ato.ms> Co-authored-by: Kyle Kelley <rgbkrk@gmail.com>
2023-09-15feat(ext/node): http2.connect() API (#19671)Bartek Iwańczuk
This commit improves compatibility of "node:http2" module by polyfilling "connect" method and "ClientHttp2Session" class. Basic operations like streaming, header and trailer handling are working correctly. Refing/unrefing is still a TODO and "npm:grpc-js/grpc" is not yet working correctly. --------- Co-authored-by: Matt Mastracci <matthew@mastracci.com>
2023-09-15fix(test): share fail fast tracker between threads (#20515)Nayeem Rahman
2023-09-15chore(ext/http): fix a rejection test (#20514)Matt Mastracci
Use `assertRejects` to actually catch errors.
2023-09-15fix(ext/http): ensure aborted bodies throw (#20503)Matt Mastracci
Fixes #20502 -- ensure that Hyper errors make it through to JS.
2023-09-15fix: init v8 platform once on main thread (#20495)Luca Casonato
This is a mitigation for segfaults happening in V8 on CPU with MPK (memory protected keys). After much trail and error we found that unless V8 platform is initialized on main thread the segfaults start appears once JIT kicks in. "deno test" and "deno bench" were affected by this problem. Fixes https://github.com/denoland/deno/issues/19926 Fixes https://github.com/denoland/deno/issues/20243 Fixes https://github.com/denoland/deno/issues/20450 --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-09-14refactor: rewrite more ops to op2 macro (#20478)Bartek Iwańczuk
2023-09-14chore(cli): update chrono to remove broken time dep (#20508)Matt Mastracci
Fixes the last dependabot security warning
2023-09-14chore: update deno_core + cargo update (#20507)Matt Mastracci
2023-09-14feat: explicit resource management in TypeScript (#20506)David Sherret
This adds support for `using` and `await using` declarations in TypeScript only. We need to wait for v8 to support it for this to work in JS.
2023-09-14refactor: remove `DENO_UNSTABLE_NPM_SYNC_DOWNLOAD` and custom sync ↵David Sherret
functionality (#20504) https://github.com/denoland/deno/pull/20488 enables us to remove this functionality. This is better because our test suite is now not testing a separate code path.
2023-09-14chore(tests): ability to pattern match unordered lines (#20488)David Sherret
This adds the ability to pattern match unordered lines. For example, the downloading messages may appear in any order ``` [UNORDERED_START] Download https://localhost:4546/a.ts Download https://localhost:4546/b.ts [UNORDERED_END] Hello! ``` Additionally, I've made the pattern matching slightly more strict and the output better.
2023-09-14fix: output traces for op sanitizer in more cases (#20494)Luca Casonato
This adds traces for the "started outside test, closed inside test" case.
2023-09-14refactor: rewrite ext/node to op2 (#20489)Bartek Iwańczuk
2023-09-14feat(ext/web): Add name to Deno.customInspect of File objects (#20415)lionel-rowe
Fixes https://github.com/denoland/deno/issues/20414
2023-09-13refactor: use TaskQueue from deno_unsync (#20485)David Sherret
2023-09-13chore(test_util): ensure that extra expectations are an error even without a ↵Matt Mastracci
filter (#20483) Running `tools/wpt.ts` with a filter would cause an error if there were extra, leftover expectations in expectations.json. These errors would not appear if no filter was passed, often leaving the filtered version of the test runner broken. This also introduces a smarter bit of logic where filters can be specified with a leading slash (`tools/wpt.ts run -- /url` is equivalent to `tools/wpt.ts run -- url`)
2023-09-13chore: bump deno_core and cargo update (#20480)Matt Mastracci
Bump deno_core, pulling in new rusty_v8. Requires some op2/deprecation fixes.
2023-09-13refactor: move `deno_core::TaskQueue` to `cli::util::sync` (#20481)David Sherret
TaskQueue is being removed from `deno_core` and replaced with an unsync version in deno_unsyc. https://github.com/denoland/deno_core/pull/193 This is a change in preparation for that. The remaining `deno_core::TaskQueue` usage in this repo should be replaced with `deno_core::unsync::TaskQueue` once upgraded.
2023-09-13feat(lsp): WorkspaceSettings::disablePaths (#20475)Nayeem Rahman
2023-09-13refactor: rewrite ext/crypto to op2 (#20477)Bartek Iwańczuk
2023-09-12fix(devcontainer): Add build deps and update extension in devcontainer (#20467)Laurence Rowe
* Installs `cmake` and `protoc` build dependencies in the docker container. * Replaced deprecated TOML extension with its suggested alternative. Note: At least 16GB is required to build Deno, so ensure you use 'New with options' and select at least the 4-core/16GB machine type when starting in GitHub Codespaces.
2023-09-12refactor: rewrite ext/net/ ops to op2 (#20471)Bartek Iwańczuk
2023-09-12fix(lsp): match enable_paths by whole path components (#20470)Nayeem Rahman
2023-09-12refactor: rewrite cli/ ops to op2 (#20462)Bartek Iwańczuk
2023-09-12fix(init): skip existing files instead of erroring (#20434)Leigh McCulloch
### What Skip writing files from the template if the files already exist in the project directory. ### Why When I run deno init in a directory that already has a main.ts, or one of the other template files, I usually want to initialize a workspace around a file I've started working in. A hard error in this case seems counter productive. An informational message about what's being skipped seems sufficient. Close #20433
2023-09-12refactor: rewrite ext/io, ext/webstorage ops to op2 (#20461)Bartek Iwańczuk
2023-09-12refactor: strongly typed TSC ops (#20466)Bartek Iwańczuk
Removes usage of `serde_json::Value` in several ops used in TSC, in favor of using strongly typed structs. This will unblock more changes in https://github.com/denoland/deno/pull/20462.
2023-09-12fix(ext/http): create a graceful shutdown API (#20387)Matt Mastracci
This PR implements a graceful shutdown API for Deno.serve, allowing all current connections to drain from the server before shutting down, while preventing new connections from being started or new transactions on existing connections from being created. We split the cancellation handle into two parts: a listener handle, and a connection handle. A graceful shutdown cancels the listener only, while allowing the connections to drain. The connection handle aborts all futures. If the listener handle is cancelled, we put the connections into graceful shutdown mode, which disables keep-alive on http/1.1 and uses http/2 mechanisms for http/2 connections. In addition, we now guarantee that all connections are complete or cancelled, and all resources are cleaned up when the server `finished` promise resolves -- we use a Rust-side server refcount for this. Performance impact: does not appear to affect basic serving performance by more than 1% (~126k -> ~125k) --------- Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-09-11chore: update inner #\![allow] to #[allow] (#20463)Matt Mastracci
Functions should generally be annotated with `#[allow]` blocks rather than using inner `#![allow]` annotations.
2023-09-12refactor: rewrite runtime/ ops to op2 (#20459)Bartek Iwańczuk
2023-09-11perf(node/net): optimize socket reads for 'npm:ws' package (#20449)Bartek Iwańczuk
Fixes performance regression introduced by https://github.com/denoland/deno/pull/20223 and https://github.com/denoland/deno/pull/20314. It's enough to have one "shared" buffer per socket and no locking mechanism is required.
2023-09-11fix: exclude internal JS files from coverage (#20448)Marvin Hagemeister
2023-09-10fix(lsp): always enable semantic tokens responses (#20440)Nayeem Rahman
2023-09-10chore: speed up test name escapeing (#20439)Marvin Hagemeister
2023-09-09feat: TypeScript 5.2 (#20425)David Sherret
Without `using` declarations or decorator metadata (waiting for that in v8).