bun icon indicating copy to clipboard operation
bun copied to clipboard

Bun's Roadmap

Open Jarred-Sumner opened this issue 2 years ago • 112 comments

Bun's roadmap

2024 Q4

bun install

  • [ ] https://github.com/oven-sh/bun/issues/11863 (will unblock https://github.com/dependabot/dependabot-core/issues/6528)
  • [ ] Fixes for frequently-reported issues for things like private git URLs and some edgecases with hoisting
  • [ ] bun update --interactive (https://github.com/oven-sh/bun/issues/4895)
  • [x] https://github.com/oven-sh/bun/issues/271
  • [ ] https://github.com/oven-sh/bun/issues/6608
  • [ ] https://github.com/oven-sh/bun/issues/5846
  • [ ] Update bun init to add "engines": { "bun": ... by default. If bun present then ignore node shebangs by default (#9346)
  • [ ] https://github.com/oven-sh/bun/issues/692

Runtime

Node.js compatibility

  • [x] Implement node:http2 server to unblock grpc2
  • [ ] Implement more of V8 C++ APIs to unblock canvas, node-pty
  • [ ] Rewrite node:http (https://github.com/oven-sh/bun/pull/14384)
  • [ ] Add much more comprehensive test coverage for napi
  • [ ] Get at least 75% of Node's test suite running on every commit (as of last update: 15% currently). This number will go up in future
  • [ ] Investigate removing our undici override
  • [ ] https://github.com/oven-sh/bun/issues/13681

Reliability

  • [ ] Delete almost all code that manually reads JSValue. Replace with an IDL bindings generator for JavaScriptCore objects/classes that supports C++ & Zig output, and importantly: function arguments, return values, and exceptions. It should make the lifetime of these values brainless for us to reason about.

Bake (Bundler)

The goal for Bake is to make Bun the most productive tool for building static & full-stack JavaScript and TypeScript applications, leveraging runtime, bundler, and transpiler integration to make things simpler.

High level:

  • [ ] Make a fast HMR development full-stack server - https://github.com/oven-sh/bun/issues/14324
  • [ ] Production builds
  • [ ] Static production builds
  • [ ] Implement an integration with a popular framework (such as Next.js)
  • [ ] Easy & powerful plugin API

bun test

  • [ ] Reporter API or socket API

Organizational

  • [ ] Hire a contractor to help us with CI
  • [ ] Hire a technical writer to help with docs
  • [ ] Hire an engineering-focused role for maintaining the TypeScript types & frontend for docs + help with integrations with third-party packages
  • [ ] Hire more systems engineers

Previous quarters

2024 Q3

bun install

Essentially, feature complete.

  • [x] bun outdated
  • [x] https://github.com/oven-sh/bun/issues/487
  • [x] bun publish
  • [ ] Text-based lockfile format (which will help unblock https://github.com/dependabot/dependabot-core/issues/6528)
  • [ ] bun update --interactive (https://github.com/oven-sh/bun/issues/4895)
  • [ ] Fixes for frequently-reported issues for things like private git URLs and some edgecases with hoisting

Runtime

Node.js compatibility

  • [x] TextEncoderStream & TextDecoderStream
  • [x] V8 C++ API (in-progress)
  • [x] Implement node:cluster
  • [ ] Implement node:http2 server to unblock grpc2
  • [x] Rewrite node:zlib to address performance issues in some common packages
  • [ ] https://github.com/oven-sh/bun/issues/13681
  • [ ] Fix various bugs in node:http, avoid wrapping Bun.serve() and fetch() and use a more direct implementation
  • [ ] Add much more comprehensive test coverage for napi
  • [ ] Get at least 25% of Node's test suite running on every commit (as of last update: 15% currently). This number will go up in future quarters.

Reliability

  • [ ] Delete almost all code that manually reads JSValue. Replace with an IDL bindings generator for JavaScriptCore objects/classes that supports C++ & Zig output, and importantly: function arguments, return values, and exceptions. It should make the lifetime of these values brainless for us to reason about.
  • [x] Address TLS-related issues that have cropped up
  • [x] Continue to allocate significant time to fixing bugs and improve test coverage as they crop up

Bundler

  • [x] Fix many common bugs people run into related to source maps or incorrect output
  • [ ] A new, higher-level iteration of Bun's bundler designed for server-driven JavaScript #14324
  • [x] CSS parser and bundler #14167

bun test

  • [ ] Reporter API or socket API

Organizational

  • [ ] Hire a contractor to help us with CI
  • [ ] Hire a technical writer to help with docs
  • [ ] Hire an engineering-focused role for maintaining the TypeScript types & frontend for docs + help with integrations with third-party packages
  • [ ] Hire more systems engineers

Jarred-Sumner avatar May 06 '22 21:05 Jarred-Sumner

this seems like a lot of work... wow

RnbWd avatar Jul 07 '22 07:07 RnbWd

Can't wait for full npm-like config support. We are using our own npm registry, and the current build time is 40-60 minutes. If it will be at least 10 minutes this will be a game-changer!

space7panda avatar Jul 11 '22 11:07 space7panda

I am waiting for the stable version of the bun. What change bun in the javascript world.

officialrajdeepsingh avatar Jul 11 '22 18:07 officialrajdeepsingh

Also waiting for the stable version. So exciting! I bet it's going to take a lot of time though. The scope of this project is much larger than what Node attempts to solve.

tipiirai avatar Jul 12 '22 05:07 tipiirai

can someone confirm that right now I can't use the package mysql2? It throws me an error because it depends on TLS package and on NET package, and I think they were not implemented yet in Bun, but I am not sure.

matepaiva avatar Jul 12 '22 16:07 matepaiva

still missing websocket server support

Kapsonfire-DE avatar Jul 12 '22 19:07 Kapsonfire-DE

Can a tinitiny docker image be placed somewhere in there? 👀

GCSBOSS avatar Jul 12 '22 21:07 GCSBOSS

Can't wait for Windows support... I'll be anxiously awaiting it until it's out. 😅

MystPi avatar Jul 14 '22 13:07 MystPi

still missing websocket server support

Dito

0x4a61636f62 avatar Jul 17 '22 06:07 0x4a61636f62

Are you planning to support http2?

sodeprecated avatar Jul 17 '22 15:07 sodeprecated

Are you planning to support http2?

HTTP/3 is on https://github.com/oven-sh/bun/issues/159 so I would say HTTP/2 will likely be added before that

moderation avatar Jul 18 '22 02:07 moderation

Are you planning to support http2?

HTTP/3 is on #159 so I would say HTTP/2 will likely be added before that

I would say that http3 on roadmap is more about quic protocol and there is no straight inheritance between http3 and http2, so maybe support of http2 needs to be marked explicitly.

sodeprecated avatar Jul 18 '22 06:07 sodeprecated

Motivated to see a stable version ASAP

frodoe7 avatar Jul 19 '22 05:07 frodoe7

Promising ! Any roadmap on a progressive translation ?

LaurelineP avatar Jul 20 '22 14:07 LaurelineP

When is the support for windows coming? Cant wait for it.

Parvat-R avatar Jul 25 '22 12:07 Parvat-R

I would say that http3 on roadmap is more about quic protocol and there is no straight inheritance between http3 and http2, so maybe support of http2 needs to be marked explicitly.

Another vote for HTTP/2 as it's a prerequisite to gRPC support.

jacoscaz avatar Jul 29 '22 12:07 jacoscaz

Any plans to create a desktop app like electron?

dyaskur avatar Aug 04 '22 03:08 dyaskur

When is the support for windows coming? Cant wait for it.

https://github.com/oven-sh/bun/issues/43 you can use WSL for now

xhyrom avatar Aug 04 '22 05:08 xhyrom

When is the support for windows coming? Cant wait for it.

#43 you can use WSL for now

I don't use WSL. Node.js and Deno support Windows natively; why can't Bun?

MystPi avatar Aug 04 '22 11:08 MystPi

When is the support for windows coming? Cant wait for it.

#43 you can use WSL for now

I don't use WSL. Node.js and Deno support Windows natively; why can't Bun?

Check https://github.com/oven-sh/bun/issues/43

xhyrom avatar Aug 04 '22 17:08 xhyrom

On the topic of CSS parsing, transpilation, minification, etc., what's your stance on dependencies? Do you want to reimplement everything yourself, or would you consider using an embeddable library? If so, I'd love to collaborate with you on embedding Parcel CSS in Bun. It's implemented in Rust, but if we added a C API, I think Bun could call into it pretty easily. It may also work via Bun's napi support, but that would probably be slower. It's about 4x faster than esbuild on benchmarks, minifying over 2 million lines of code per second on a single thread. You can find more info in the announcement blog post from February, though it's gotten even faster since then. Would be cool to work together, and I'm happy to help support how I can.

devongovett avatar Aug 08 '22 23:08 devongovett

One thought re: minification, please include a way to exclude class/parameter (on both function and constructor args, and incl. subkeys)/function names from minification as it makes certain dependency injection patterns impossible.

Traditionally, many of the existing DI libraries would use Function.toString() and then use some regex to pull out the fn name & args, but given the reason that is needed and how hacky it is, this may be an opportunity for bun to create a better solution ahead of time, for example by exposing the pre-minified function/class names + argument names programmatically such that they are available at runtime. Note that they much be able to be retrieved before the function is called or class is instantiated.

aphix avatar Aug 10 '22 19:08 aphix

How about full support for NestJS? Looking forward to it.

piosystems avatar Nov 29 '22 17:11 piosystems

[ ] read resolutions from package.json

sayjeyhi avatar Dec 10 '22 08:12 sayjeyhi

Bun should move toward full support for nestjs.

DippsoN avatar Dec 18 '22 13:12 DippsoN

Are there any plans for bun language server? Deno provides one: https://deno.land/[email protected]/advanced/language_server/overview, so I thought bun might do as well

kuator avatar Jan 14 '23 04:01 kuator

Bun === GOAT

gabriiels avatar Mar 09 '23 03:03 gabriiels

Setup a donations button!!

vanor89 avatar Mar 10 '23 21:03 vanor89

As an Electron or Tauri alternative. Maybe should consider to build single-file executable files. .exe or .msi for windows and .dmg and .pkg for macos.

wxs77577 avatar Mar 16 '23 09:03 wxs77577

Would love to eventually see support for Qwik. Down the line would be willing to help with the effort too.

Alberto-Safra avatar Apr 09 '23 20:04 Alberto-Safra

Would love to eventually see support for Qwik. Down the line would be willing to help with the effort too.

Yes!!!!!!!!!!!!!!!!! Qwik + Bun === GOAT

gabriiels avatar Apr 09 '23 21:04 gabriiels