0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-02-01 12:16:11 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
Matt Mastracci 113c715763
fix(ext/http): avoid lockup in graceful shutdown (#21253)
Follow-up to #20822. cc @lrowe 

The `httpServerExplicitResourceManagement` tests were randomly failing
on CI because of a race.

The `drain` waker was missing wakeup events if the listeners shut down
after the last HTTP response finished. If we lost the race (rare), the
server Rc would be dropped and we wouldn't poll it again.

This replaces the drain waker system with a signalling Rc that always
resolves when the refcount is about to become 1.

Fix verified by running serve tests in a loop:

```
for i in {0..100}; do cargo run --features=__http_tracing -- test
 -A --unstable '/Users/matt/Documents/github/deno/deno/cli/tests/unit/ser
ve_test.ts' --filter httpServerExplicitResourceManagement; done;
```
2023-11-24 03:05:27 +01:00
.cargo chore: Add a local-build.toml to make downstream packaging from sourc… (#20236) 2023-08-24 08:46:57 -06:00
.devcontainer fix(devcontainer): Add build deps and update extension in devcontainer (#20467) 2023-09-12 15:33:07 +00:00
.github chore: add aarch64-apple-darwin builds to ci (#21243) 2023-11-24 03:03:27 +01:00
bench_util 1.38.2 (#21229) 2023-11-17 13:15:07 +09:00
cli chore: add upgrade prompt integration test (#21273) 2023-11-24 03:05:27 +01:00
ext fix(ext/http): avoid lockup in graceful shutdown (#21253) 2023-11-24 03:05:27 +01:00
runtime fix(runtime): fix for panic in classic workers (#21300) 2023-11-24 03:05:27 +01:00
test_ffi refactor: replace deferred() from std/async with Promise.withResolvers() (#21234) 2023-11-24 03:05:26 +01:00
test_napi Revert "chore: update to std@0.207.0 (#21284)" (#21295) 2023-11-24 03:05:26 +01:00
test_util chore: add upgrade prompt integration test (#21273) 2023-11-24 03:05:27 +01:00
tools refactor: replace deferred() from std/async with Promise.withResolvers() (#21234) 2023-11-24 03:05:26 +01: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(fmt): maintain parens for jsx in member expr (#21280) 2023-11-24 03:05:08 +01: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 feat: Add "deno jupyter" subcommand (#20337) 2023-09-16 02:42:09 +02:00
.gitmodules chore: remove third_party submodule (#20201) 2023-08-19 09:56:12 +05:30
.rustfmt.toml chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
Cargo.lock fix(fmt): maintain parens for jsx in member expr (#21280) 2023-11-24 03:05:08 +01:00
Cargo.toml chore(ext/http): bump version for re-release (#21254) 2023-11-24 03:03:26 +01:00
LICENSE.md chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
README.md docs: add missing cmake build dependency installation (#20788) 2023-11-06 13:31:26 +01:00
Releases.md 1.38.2 (#21229) 2023-11-17 13:15:07 +09:00
rust-toolchain.toml chore: update to Rust 1.74 (#21210) 2023-11-24 03:03:25 +01: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:

# Install build dependencies
apt install -y cmake protobuf-compiler # Linux
brew install cmake protobuf # macOS

# Build and install Deno
cargo install deno --locked

See deno_install and releases for other options.

Getting Started

Try running a simple program:

deno run https://examples.deno.land/hello-world.ts

Or setup a simple HTTP server:

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

More Examples

Additional Resources

Contributing

We appreciate your help!

To contribute, please read our contributing instructions.