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
Comments
|
this seems like a lot of work... wow |
|
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! |
|
I am waiting for the stable version of the bun. What change bun in the javascript world. |
|
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. |
|
can someone confirm that right now I can't use the package |
|
still missing websocket server support |
|
Can a tinitiny docker image be placed somewhere in there? |
|
Can't wait for Windows support... I'll be anxiously awaiting it until it's out. |
Dito |
|
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. |
|
Motivated to see a stable version ASAP |
|
Promising ! |
|
When is the support for windows coming? Cant wait for it. |
Another vote for HTTP/2 as it's a prerequisite to gRPC support. |
|
Any plans to create a desktop app like electron? |
#43 you can use WSL for now |
|
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. |
|
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. |
|
How about full support for NestJS? Looking forward to it. |
|
[ ] read |
|
Bun should move toward full support for nestjs. |
|
Are there any plans for bun language server? Deno provides one: https://deno.land/manual@v1.29.1/advanced/language_server/overview, so I thought bun might do as well |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
As a |
|
Would love to eventually see support for Qwik. Down the line would be willing to help with the effort too. |
Yes!!!!!!!!!!!!!!!!! Qwik + Bun === GOAT |
|
Some cool dependency injection would be nice, such as https://www.npmjs.com/package/node-dependency-injection without decorators and making possible configuring yml files for each enviroment, for example. Keep that absolute good work! Love it <3 |
|
Would a linter/formatter be considered in the future? An alternative to eslint that'd use Bun's parser, would be faster and would have a better plugin/config format? |
|
when can have a tool with bundle analyzer?It's like webpack-bundle-analyzer。 of course , Providing 'stats.json' files is also possible |
This tracks the current near-term plans for Bun.
Edge bundling
With bundle-time functions, static analysis goes dynamic. Objects returned by functions executed at bundle-time are injected into the AST. This makes dead-code elimination work a lot better.
I expect this to spawn a new generation of bundle-time JavaScript frameworks.
But first, a lot more needs to be built.
Main blockers
JavaScript minifier
"sideEffects"from package.jsonWeb Bundler (production-focused, instead of development-focused)):
constTypeScript enum supportCSS parser:
Bun.Transpilersupport for CSS<style jsx>supportOnce complete, the next step is integration with the HTTP server and other Bun APIs
Efficient bundling format
Cache builds into a binary archive format with metadata designed for fast random access,
splice(), andsendfile()support. Outside of the edge runtime, these will work as a single-file JavaScript executable internally holding many files.Instances of Bun will need to know what bundle(s) they're serving. From there, instead of going through a filesystem, we can serve static requests directly from the bundle and dynamic requests will bundle on-demand, potentially importing code from statically-bundled code.
BundleAPI (not finalized yet)Bundle.prototype.resolve(path): stringAPIBundle.prototype.build(entryPoint, context): ResponseAPIBundle.prototype.generate(entryPoints, options): Promise<Bundle>APIJSNodeAST APIBundleServer-side rendering
Bundle,JSNode, and other Bun APIsRuntime
.vue,.svelte,.scssimports and more.onLoadAPI in bun.jsonResolveAPI in bun.jsbunfig.tomlonLoadplugins from native librariesonResolveplugins from native librarieshttps:andhttp:imports. This includes a disk cache possibly integrated into the bundling format.data:importsblob:imports & URLs (URL.createObjectURL,URL.revokeObjectURL)Edge Runtime
Slimmer, linux-only build of bun.js:
bun installUsability & Developer Experience
bunREPL with transpiler-enabled support for async/await, typescript and ES Modules (those are not supported byevalusually)npx@types/bunnpm packageEcosystem
Web Compatibility
Web Streams
fetchRequestResponseBlobBun.serve(HTTP server)HTMLRewriterTextEncoderStreamTextDecoderStreamCompressionStreamDecompressionStreamFormDatafetchWeb WorkersupportpostMessagefrom WebKitBroadcastChannelfrom WebKitMessageChannelfrom WebKitstructuredClonefrom WebKitImport WebCrypto implementation from WebKit/Safari into bun.js
Support
OffscreenCanvasAPI,ImageBitmapfor 2D graphics. This may use WebKit's implementation or it might use Skianote: after a little testing, performance of safari's web streams implementation is similar to deno and much faster than node 18. I expect the final result to be faster than deno because bun's TextEncoder/TextDecoder & Blob implementation seems generally faster than safari's
Security
fetch. Right now, it doesn't.Windows support
Node.js Compatibility
child_processsupport"fs""net"module"crypto"polyfill should use hardware-accelerated crypto for better performance"buffer"implementationrequireimplementation that natively supports ESM (rather than via transpiler). This would involve subclassingAbstractModuleRecordin JSC. This would better support lazy-loading CommonJS modules.Reliability
fetchimplementation:ActiveDOMObjectfrom WebKit so that all native objects can be suspended & terminatedMisc
bun installThe text was updated successfully, but these errors were encountered: