profile
viewpoint

Ask questionsMajor features necessary for 1.0

We've got a lot of issues, some are tiny, others are big features. I want to outline what I perceive to be the major missing bits before we can consider 1.0

  • [ ] "deno --debug" https://github.com/denoland/deno/issues/1120 We need to be able to debug using Chrome Devtools. As the deno userland code base grows, it becomes in increasingly painful to work without a debugger. The way this will work is with a websocket server in Rust (port 9229) which forwards messages to V8 (using V8InspectorClient).

  • [ ] Loading and execution of modules (either JS or TS) needs to be correct. This is the main thing we deliver actually, but there are still many bugs: <s>source maps are sometimes incorrect https://github.com/denoland/deno/issues/2390</s>, <s>double downloads happen https://github.com/denoland/deno/issues/2442</s>, the cache needs to be refactored https://github.com/denoland/deno/issues/2057.

  • [X] Import maps. It's a very reasonable standard and we can provide support via a command line flag. This allows bare imports. The feature will land very soon https://github.com/denoland/deno/pull/2360.

  • [ ] Dynamic import. 50% complete at the time of writing. https://github.com/denoland/deno/issues/1789 Dynamic import is a necessary feature for "deno test" https://github.com/denoland/deno_std/issues/193, which also needs to be in 1.0.

  • [ ] "deno fmt" is slow on the first run. It download a couple of large prettier bundles. https://github.com/denoland/deno/issues/2490

  • [ ] We need to support d.ts files https://github.com/denoland/deno/issues/1432

  • [X] "deno bundle" outputs a single AMD bundle of your program. This is useful to share code with websites. Early work has started: https://github.com/denoland/deno/pull/2467

  • [ ] "deno compile" is a very interesting feature to output an executable. It would be nice to have, but I would let this slip past 1.0. https://github.com/denoland/deno/issues/986

  • [x] "deno install" is a program that creates little shell script aliases to deno programs in your $PATH. This let's people distribute their code easily. https://github.com/denoland/deno_std/issues/471

  • [ ] dlopen / plugins / extension modules. We need some way of calling into Rust land. The way Parcel does it is pretty awesome https://parceljs.org/rust.html - but we need low-level primitives to build that on, as we need to carefully funnel everything through the Op abstraction. @afinch7 has a working patch for loading ops in DLLs https://github.com/denoland/deno/pull/2385, we are still iterating on the exact API. I would allow a true FFI module to slip past 1.0 - we'll get there - but it needs to be built on ops.

  • [ ] Support TLS https://github.com/denoland/deno/pull/2326

  • [ ] The web-server should be faster.

  • [ ] Do any major API renames. https://github.com/denoland/deno/issues/2384 <s>https://github.com/denoland/deno/issues/2474</s> https://github.com/denoland/deno/issues/2635

  • [X] When you visit a deno.land script url (example https://deno.land/std/http/server.ts) in a web browser, it should do better than redirect. It should look at the Accept header and serve pretty HTML. Solved in https://github.com/denoland/registry/commit/b78e6ae331004859aad7b01ed452f6b00265b035

  • [ ] If you use "docs.deno.land" you will get auto-generated docs.

  • [ ] typescript dependencies are not loaded in parallel #2626

Other minor bugs that are nevertheless blockers:

  • [x] async iteration on fetch bodies https://github.com/denoland/deno/issues/2520
  • [ ] https://github.com/denoland/deno_std/issues/442
  • [ ] support onload https://github.com/denoland/deno/issues/2386
  • [ ] support proxy for module downloads https://github.com/denoland/deno/issues/588
  • [ ] panic on too many open files https://github.com/denoland/deno/issues/2243
denoland/deno

Answer questions acconrad

@ry I'll take this:

When you visit a deno.land script url

Where would the CSS live for that? Where is the website server code within deno?