Bun.js focuses on performance, developer experience, and compatibility with the JavaScript ecosystem. ## HTTP Requests ```ts // http.ts export default { port: 3000, fetch(request: Request) { return new Response("Hello World"); }, }; // bun ./http.ts ``` | Requests per second | OS | CPU | Bun version | | ---------------------------------------------------------------------- | ----- | ------------------------------ | ----------- | | [260,000](https://twitter.com/jarredsumner/status/1512040623200616449) | macOS | Apple Silicon M1 Max | 0.0.76 | | [160,000](https://twitter.com/jarredsumner/status/1511988933587976192) | Linux | AMD Ryzen 5 3600 6-Core 2.2ghz | 0.0.76 | {% details summary="See benchmark details" %} Measured with [`http_load_test`](https://github.com/uNetworking/uSockets/blob/master/examples/http_load_test.c) by running: ```bash $ ./http_load_test 20 127.0.0.1 3000 ``` {% /details %} ## File System `cat` clone that runs [2x faster than GNU cat](https://twitter.com/jarredsumner/status/1511707890708586496) for large files on Linux ```js // cat.js import { resolve } from "path"; import { write, stdout, file, argv } from "bun"; const path = resolve(argv.at(-1)); await write( // stdout is a Blob stdout, // file(path) returns a Blob - https://developer.mozilla.org/en-US/docs/Web/API/Blob file(path), ); ``` Run this with `bun cat.js /path/to/big/file`. ## Reading from standard input ```ts for await (const line of console) { // line of text from stdin console.log(line); } ``` ## React SSR ```js import { renderToReadableStream } from "react-dom/server"; const dt = new Intl.DateTimeFormat(); export default { port: 3000, async fetch(request: Request) { return new Response( await renderToReadableStream( Hello World

Hello from React!

The date is {dt.format(new Date())}

, ), ); }, }; ``` Write to stdout with `console.write`: ```js // no trailing newline // works with strings and typed arrays console.write("Hello World!"); ``` There are some more examples in the [examples](./examples) folder. PRs adding more examples are very welcome! ## Fast paths for Web APIs Bun.js has fast paths for common use cases that make Web APIs live up to the performance demands of servers and CLIs. `Bun.file(path)` returns a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) that represents a lazily-loaded file. When you pass a file blob to `Bun.write`, Bun automatically uses a faster system call: ```js const blob = Bun.file("input.txt"); await Bun.write("output.txt", blob); ``` On Linux, this uses the [`copy_file_range`](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) syscall and on macOS, this becomes `clonefile` (or [`fcopyfile`](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/copyfile.3.html)). `Bun.write` also supports [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) objects. It automatically converts to a [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). ```js // Eventually, this will stream the response to disk but today it buffers await Bun.write("index.html", await fetch("https://example.com")); ``` k/fix/http-lowercase-headers Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/integration/snippets/void-shouldnt-delete-call-expressions.js (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2021-10-18Starting to rewrite the router to fix some bugs and support catch-all + optio...Gravatar Jarred Sumner 8-143/+1203
2021-10-17Update README.mdGravatar Jarred Sumner 1-0/+10
2021-10-17Bump to latestGravatar Jarred Sumner 1-1/+1
2021-10-17[bun-framework-next] Fix when the project does not define a `_app` pageGravatar Jarred Sumner 2-6/+16
2021-10-17Add `--open` flag to `bun create`Gravatar Jarred Sumner 1-0/+20
2021-10-17Slight cleanupGravatar Jarred Sumner 4-43/+23
2021-10-16Update README.mdGravatar Jarred Sumner 1-2/+17
2021-10-16Update README.mdGravatar Jarred Sumner 1-2/+9
2021-10-16bump!Gravatar Jarred Sumner 4-8/+22
2021-10-16Improve support for Create React Appbun-v0.0.36jarred/add-gitGravatar Jarred Sumner 2-12/+137
2021-10-16Update js_ast.zigGravatar Jarred Sumner 1-0/+17
2021-10-16Support GitHub repositories, transform package.json to better fit Bun's usageGravatar Jarred Sumner 3-404/+1180
2021-10-16more stringsGravatar Jarred Sumner 2-3/+28
2021-10-16Ensure `self` is always definedGravatar Jarred Sumner 1-0/+1
2021-10-16Fix edgecase in Transfer-Encoding chunkedGravatar Jarred Sumner 1-3/+2
2021-10-15CleanupGravatar Jarred Sumner 5-7/+9
2021-10-15Bump the versionbun-v0.0.35Gravatar Jarred Sumner 2-2/+2
2021-10-15LatestGravatar Jarred Sumner 5-14/+1360
2021-10-15:camera:Gravatar Jarred Sumner 2-2/+4
2021-10-15Fix static libarchive buildGravatar Jarred Sumner 1-2/+5
2021-10-15Bump s2n-tlsGravatar Jarred Sumner 1-0/+0
2021-10-15Linux build fixesGravatar Jarred SUmner 11-1377/+154
2021-10-15Update MakefileGravatar Jarred Sumner 1-1/+2
2021-10-15Cleanup makefile to get libiconv setup for linuxGravatar Jarred Sumner 4-2416/+9
2021-10-15Update MakefileGravatar Jarred Sumner 1-5/+5
2021-10-15Update MakefileGravatar Jarred Sumner 1-1/+1
2021-10-15update makefilejarred/genGravatar Jarred Sumner 3-16/+23
2021-10-15PolishGravatar Jarred Sumner 13-208/+2907
2021-10-14:sparkle:Gravatar Jarred Sumner 11-18245/+296
2021-10-14Update README.mdGravatar Jarred Sumner 1-2/+2
2021-10-14Update README.mdGravatar Jarred Sumner 1-2/+9
2021-10-14Update README.mdGravatar Jarred Sumner 1-9/+8
2021-10-14Update README.mdGravatar Jarred Sumner 1-0/+3
2021-10-14Update README.mdGravatar Jarred Sumner 1-1/+2
2021-10-14Update README.mdGravatar Jarred Sumner 1-107/+107
2021-10-14Support local templatesGravatar Jarred Sumner 8-145/+558
2021-10-14Update router.zigGravatar Jarred Sumner 1-0/+212
2021-10-14Support passing an absolute pathGravatar Jarred Sumner 4-171/+313
2021-10-14Update bun-create.mdGravatar Jarred Sumner 1-2/+6
2021-10-14Update bun-create.mdGravatar Jarred Sumner 1-1/+1
2021-10-14Add doc explaining bun-createGravatar Jarred Sumner 3-3/+60
2021-10-14`bun create react app` is almost doneGravatar Jarred Sumner 27-57/+1561
2021-10-13v0.0.0v0.0.0Gravatar Jarred Sumner 1-1/+2
2021-10-13[fetch] Slight perf improvementGravatar Jarred Sumner 1-0/+4
2021-10-13`--turbo` mode for fetch cli, which disables sending TLS shutdownGravatar Jarred Sumner 2-2/+5
2021-10-13[fetch] Support Transfer-Encoding: chunkedGravatar Jarred Sumner 5-39/+135
2021-10-13Update build.zigGravatar Jarred Sumner 1-2/+3
2021-10-13Clean up examples a littleGravatar Jarred Sumner 42-102/+7
2021-10-13Add TLS 1.3 support, improve fetch() HTTPS performanceGravatar Jarred Sumner 16-287/+751