0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
Matt Mastracci 98df69fd4c
fix(core): Ensure we don't lose the waker when polling an empty JoinSet (#19655)
This is a reproduction and fix for a very obscure bug where the Deno
runtime locks up we end up polling an empty JoinSet and attempt to
resolve ops after-the-fact. There's a small footgun in the JoinSet API
where polling it while empty returns Ready(None), which means that it
never holds on to the waker. This means that if we aren't testing for
this particular return value and don't stash the waker ourselves for a
future async op to eventually queue, we can end up losing the waker
entirely and the op wakes up, notifies tokio, which notifies the
JoinSet, which then has nobody to notify 😢.

Co-authored-by: Luca Casonato <hello@lcas.dev>
Co-authored-by: Bartek Iwańczuk <biwanczuk@gmail.com>
2023-06-29 16:01:54 +00:00
.cargo fix: reload config files on watcher restarts (#19487) 2023-06-14 22:29:19 +00:00
.devcontainer chore: update devcontainer configuration (#15751) 2022-09-03 02:21:41 +02:00
.github chore: Don't reconfigure storage on XL runners (#19641) 2023-06-28 20:44:39 +00:00
bench_util chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
cli fix(console): correct the parseCssColor algorithm (#19645) 2023-06-28 19:46:30 -06:00
core fix(core): Ensure we don't lose the waker when polling an empty JoinSet (#19655) 2023-06-29 16:01:54 +00:00
ext fix(ext/websocket): Ensure that errors are available after async response returns (#19642) 2023-06-29 07:24:01 -06:00
ops chore: Ensure copyright line is the first in the file (#19608) 2023-06-26 09:38:55 -06:00
runtime feat: add more Deno.errors classes (#19514) 2023-06-29 01:46:16 +02:00
serde_v8 chore: Ensure copyright line is the first in the file (#19608) 2023-06-26 09:38:55 -06:00
test_ffi fix(test_ffi): thread_safe_callback is flaky (#19640) 2023-06-28 14:41:59 -06:00
test_napi chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
test_util feat(lock): skip saving declaration files in the lockfile (#19447) 2023-06-26 15:53:17 -04:00
third_party@fd270b7927 fix: upgrade to deno_ast 0.27 (#19375) 2023-06-05 19:03:39 -04:00
tools fix(ext/websocket): Ensure that errors are available after async response returns (#19642) 2023-06-29 07:24:01 -06:00
.dlint.json chore: update dlint to v0.37.0 for GitHub Actions (#17295) 2023-01-16 17:17:18 +01:00
.dprint.json fix: upgrade to deno_ast 0.27 (#19375) 2023-06-05 19:03:39 -04:00
.editorconfig editorconfig: Don't insert final newline in .out files (#1686) 2019-02-07 11:31:49 -05:00
.gitattributes fix(test): support typechecking docs with CRLF line endings (#12748) 2021-11-15 09:58:04 -05:00
.gitignore chore(ext/websocket): readd autobahn|testsuite fuzzingclient (#18903) 2023-05-01 14:37:32 +02:00
.gitmodules chore: check node_compat config diff in CI (#19119) 2023-05-15 21:22:53 +09:00
.rustfmt.toml chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
Cargo.lock fix(core): Ensure we don't lose the waker when polling an empty JoinSet (#19655) 2023-06-29 16:01:54 +00:00
Cargo.toml fix(ext/node): support brotli APIs (#19223) 2023-06-24 19:42:08 +05:30
LICENSE.md chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
README.md docs(readme): Update readme (#18677) 2023-04-17 01:08:05 +02:00
Releases.md chore: fix typos (#19572) 2023-06-26 09:10:27 -04:00
rust-toolchain.toml chore: upgrade to Rust 1.68.2 (#19416) 2023-06-08 04:04:07 +02:00

Deno

Twitter badge Discord badge YouTube badge

the deno mascot dinosaur standing in the rain

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Features

Install

Shell (Mac, Linux):

curl -fsSL https://deno.land/install.sh | sh

PowerShell (Windows):

irm https://deno.land/install.ps1 | iex

Homebrew (Mac):

brew install deno

Chocolatey (Windows):

choco install deno

Scoop (Windows):

scoop install deno

Build and install from source using Cargo:

cargo install deno --locked

See deno_install and releases for other options.

Getting Started

Try running a simple program:

deno run https://deno.land/std/examples/welcome.ts

Or setup a simple HTTP server:

import { serve } from "https://deno.land/std@0.182.0/http/server.ts";

serve((_req) => new Response("Hello, World!"));

More examples.

Additional Resources

Contributing

We appreciate your help!

To contribute, please read our contributing instructions.