Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bun's Roadmap #159

Open
13 of 52 tasks
Jarred-Sumner opened this issue May 6, 2022 · 125 comments
Open
13 of 52 tasks

Bun's Roadmap #159

Jarred-Sumner opened this issue May 6, 2022 · 125 comments
Labels
tracking An umbrella issue for tracking big features

Comments

@Jarred-Sumner
Copy link
Collaborator

Jarred-Sumner commented May 6, 2022

Bun's roadmap

2024 Q4

bun install

Runtime

Node.js compatibility

  • Implement node:http2 server to unblock grpc2
  • Implement more of V8 C++ APIs to unblock canvas, node-pty
  • Rewrite node:http (Rewrite node:http to not use Request & Response #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
  • Rewrite node:crypto #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:

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.

Runtime

Node.js compatibility

  • TextEncoderStream & TextDecoderStream
  • V8 C++ API (in-progress)
  • Implement node:cluster
  • Implement node:http2 server to unblock grpc2
  • Rewrite node:zlib to address performance issues in some common packages
  • Rewrite node:crypto #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.
  • Address TLS-related issues that have cropped up
  • Continue to allocate significant time to fixing bugs and improve test coverage as they crop up

Bundler

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
@RnbWd
Copy link

RnbWd commented Jul 7, 2022

this seems like a lot of work... wow

@space7panda
Copy link

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!

@officialrajdeepsingh
Copy link

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

@tipiirai
Copy link

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.

@matepaiva
Copy link

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.

@Kapsonfire-DE
Copy link
Contributor

still missing websocket server support

@GCSBOSS
Copy link

GCSBOSS commented Jul 12, 2022

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

@MystPi
Copy link

MystPi commented Jul 14, 2022

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

@0x4a61636f62
Copy link

still missing websocket server support

Dito

@sodeprecated
Copy link

Are you planning to support http2?

@moderation
Copy link

Are you planning to support http2?

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

@sodeprecated
Copy link

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.

@frodoe7
Copy link

frodoe7 commented Jul 19, 2022

Motivated to see a stable version ASAP

@LaurelineP
Copy link

Promising !
Any roadmap on a progressive translation ?

@Parvat-R
Copy link

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

@jacoscaz
Copy link

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.

@DetachHead DetachHead mentioned this issue Aug 1, 2022
@dyaskur
Copy link

dyaskur commented Aug 4, 2022

Any plans to create a desktop app like electron?

@xhyrom
Copy link
Collaborator

xhyrom commented Aug 4, 2022

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

#43 you can use WSL for now

@powerpaul17
Copy link

@guest271314 , I think @huseeiin meant it can be checked in the list since it seems to be implemented 😉

@Edberaga
Copy link

Are there any pre-requities to use and learn Bun?

@millette
Copy link

@Edberaga
dae69f5fefca5acd3f39f6c153995812d03aa2ba74d14df57dd4a491624b9841

@eknowles
Copy link
Contributor

eknowles commented Aug 7, 2024

@Jarred-Sumner i think many more of these items can now be ticked off 🙌

@jhaemin
Copy link

jhaemin commented Aug 7, 2024

I'm still waiting for IIFE output format. It's the only reason I can't use Bun as a bundler.

@Jarred-Sumner
Copy link
Collaborator Author

Updated.

@libersoft-org
Copy link

Any plans for HTTP/3 and WebTransport?

Thank you.

@tomaszzmudzinski
Copy link

Any plans to change this?

"The Next.js App Router currently relies on Node.js APIs that Bun does not yet implement. The guide below uses Bun to initialize a project and install dependencies, but it uses Node.js to run the dev server."

@Gadrawingz
Copy link

I am balancing Node.js + Fastify vs Bun + Hono

@guest271314

This comment was marked as off-topic.

@danielniccoli
Copy link

@Jarred-Sumner Why have you removed the Streams APIs from the roadmap? Are these tracked elsewhere? Or have these be removed entirely from the roadmap?

@Eveeifyeve
Copy link

Sorry I mentioned it cause I like the idea of bun roadmap I thought I will credit it.

@Movsar-Khalakhoev
Copy link

Easy & powerful plugin API

Is there an example of what the plugin API interface will look like? Would like to see the possibility of transforming the code using the visitor pattern, as it is done in @babel/traverse

@kravetsone
Copy link

Why not bun update -i not by default?
I guess it would be more convinient

@Eveeifyeve
Copy link

Why not bun update -i not by default? I guess it would be more convinient

--interactive can be short alaised to -i I am looking to do this but I need some help from @Jarred-Sumner or someone to get to me a basic idea what it will look like and etc.
#4895 (comment)

@kravetsone
Copy link

Why not bun update -i not by default? I guess it would be more convinient

--interactive can be short alaised to -i I am looking to do this but I need some help from @Jarred-Sumner or someone to get to me a basic idea what it will look like and etc.
#4895 (comment)

I mean interactive by default not in CI without flagging

@Eveeifyeve
Copy link

Why not bun update -i not by default? I guess it would be more convinient

--interactive can be short alaised to -i I am looking to do this but I need some help from @Jarred-Sumner or someone to get to me a basic idea what it will look like and etc.
#4895 (comment)

I mean interactive by default not in CI without flagging

Not really because interactive should be optional that’s how pnpm and yarn do it is where they update everything and if you need interactive then you use the flag.

@kravetsone
Copy link

Why not bun update -i not by default? I guess it would be more convinient

--interactive can be short alaised to -i I am looking to do this but I need some help from @Jarred-Sumner or someone to get to me a basic idea what it will look like and etc.
#4895 (comment)

I mean interactive by default not in CI without flagging

Not really because interactive should be optional that’s how pnpm and yarn do it is where they update everything and if you need interactive then you use the flag.

but what usecase to not use interactivity? i guess it more better to know what u bumps

also just add --all flag to bump all deps without interactivity

@Eveeifyeve
Copy link

Why not bun update -i not by default? I guess it would be more convinient

--interactive can be short alaised to -i I am looking to do this but I need some help from @Jarred-Sumner or someone to get to me a basic idea what it will look like and etc.
#4895 (comment)

I mean interactive by default not in CI without flagging

Not really because interactive should be optional that’s how pnpm and yarn do it is where they update everything and if you need interactive then you use the flag.

but what usecase to not use interactivity? i guess it more better to know what u bumps

also just add --all flag to bump all deps without interactivity

Because interactively is bearly used and will be a pain in way when you just trying to update all deps. By default it should be updates all deps but you have the option to interactively update deps using -i or --interactive

@danielniccoli
Copy link

@kravetsone It is idiomatic in Linux and Windows that shell commands should be non-interactive first if they are meant to be used in both ways. And for bun this is certainly the case.

@Eveeifyeve While it is good to have your opinion formed by outside factors, I'd certainly say that there are better arguments than looking at yarn or pnpm to decide what bun should do (see my above argument). Whether or not interactive is bearly used needs some sources and whether it is a pain is certainly subjective. :)

I would recommend to move that discussion into the Discussions section. Saying that, commenting on the matter makes me guilty as well :)

@Eveeifyeve
Copy link

Eveeifyeve commented Oct 30, 2024

@Eveeifyeve While it is good to have your opinion formed by outside factors, I'd certainly say that there are better arguments than looking at > yarn or pnpm to decide what bun should do (see my above argument).

I will look at your above argument.

Whether or not interactive is bearly used needs some sources and > whether it is a pain is certainly subjective. :)

I can't find some sources, but I know there is some data out there.

I would recommend to move that discussion into the Discussions section. Saying that, commenting on the matter makes me guilty as well :)

Or the bun discord using the threads thing.

@RobinKnipe
Copy link

Why not bun update -i not by default? I guess it would be more convinient

If you want to change the way a command works for you, why not just create an alias? e.g.

# in ~/.bash_aliases
alias buni='bun update -i'

@guest271314

This comment was marked as off-topic.

@Eveeifyeve
Copy link

@danielniccoli You ever get an answer on your streams inquiry? You are talking about WHATWG Streams, correct?

Um This is not related idk why you even mentioned this.

@Jarred-Sumner @paperdave.

@guest271314

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tracking An umbrella issue for tracking big features
Projects
None yet
Development

No branches or pull requests