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).

  • [x] 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.

  • [x] Dynamic import. 50% complete at the time of writing. https://github.com/denoland/deno/issues/1789

  • [x] "deno test" test runner https://github.com/denoland/deno_std/issues/193

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

  • [x] 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/issues/3009

  • [ ] The web-server should be faster.

  • [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. https://github.com/denoland/deno/issues/3094

  • [x] typescript dependencies are not loaded in parallel <s>#2626</s> https://github.com/denoland/deno/issues/2994

  • [ ] signal handlers https://github.com/denoland/deno/issues/2339

<s>- [ ] fs events https://github.com/denoland/deno/issues/1826</s>

  • [ ] TS and source maps are correctly recompiled https://github.com/denoland/deno/issues/2945

  • [ ] Remove tokio_util::block_on https://github.com/denoland/deno/issues/2960

  • [ ] "deno test" is slow (when running on std) https://github.com/denoland/deno/issues/2789

Do any major API renames.

  • [X] https://github.com/denoland/deno/issues/2384
  • [X] https://github.com/denoland/deno/issues/2474
  • [ ] https://github.com/denoland/deno/issues/2635
  • [ ] https://github.com/denoland/deno/issues/2767 use web standard Permission API
  • [x] https://github.com/denoland/deno/issues/2730 register_op
  • [x] https://github.com/denoland/deno_std/issues/562 test(name, fn)
  • [ ] https://github.com/denoland/deno/issues/2123 Deno.args
  • [ ] https://github.com/denoland/deno/issues/2934 referencing d.ts files
  • [ ] https://github.com/denoland/deno/issues/2553 import.meta doesn't work with bundling on browsers. We need to come up with a different scheme for branching if the script is the main.

Other minor bugs that are nevertheless blockers:

  • [x] async iteration on fetch bodies https://github.com/denoland/deno/issues/2520
  • [x] https://github.com/denoland/deno_std/issues/442
  • [x] support onload https://github.com/denoland/deno/issues/2386
  • [x] support proxy for module downloads <s>https://github.com/denoland/deno/issues/588</s> https://github.com/denoland/deno/issues/2873
  • [x] panic on too many open files https://github.com/denoland/deno/issues/2243
  • [ ] we need a way to use typescript compiler from userland https://github.com/denoland/deno_std/issues/428
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?