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

Major features necessary for 1.0 #2473

Open
ry opened this issue Jun 7, 2019 · 9 comments

Comments

7 participants
@ry
Copy link
Collaborator

commented Jun 7, 2019

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" #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: source maps are sometimes incorrect #2390, double downloads happen #2442, the cache needs to be refactored #2057.

  • 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 #2360.

  • Dynamic import. 50% complete at the time of writing. #1789 Dynamic import is a necessary feature for "deno test" denoland/deno_std#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. #2490

  • We need to support d.ts files #1432

  • "deno bundle" outputs a single AMD bundle of your program. This is useful to share code with websites. Early work has started: #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. #986

  • "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. denoland/deno_std#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 #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 #2326

  • The web-server should be faster.

  • Do any major API renames. #2384 #2474

  • 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 denoland/registry@b78e6ae

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

Other minor bugs that are nevertheless blockers:

@ry ry pinned this issue Jun 7, 2019

@95th

This comment has been minimized.

Copy link
Contributor

commented Jun 10, 2019

"deno fmt" is slow on the first run. It download a couple of large prettier bundles.

deno fmt right now combines "installation" by loading prettier bundles + formatting.

We can follow Rust's example for this. Rust's cargo fmt is optional but you can download it using rustup component add rustfmt.

We can do something like deno install fmt (using denoland/deno_std#471) which would download the prettier bundles and compile them into cache. Only after this, user should be able to call deno fmt.

Also, is there any existing issue for this?

@ry

This comment has been minimized.

Copy link
Collaborator Author

commented Jun 10, 2019

@95th let's move the discussion for fmt to #2490

The other option is to include prettier in the compiler snapshot - which would make it run very fast.

@afinch7

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2019

We also need to address this at some point before 1.0

deno/cli/ops.rs

Line 196 in 76329cf

msg::Any::FetchModuleMetaData => Some(op_fetch_module_meta_data),

@bartlomieju

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2019

@afinch7 could you explain what's to address with op_fetch_module_meta_data? (preferably in separate issue)

@acconrad

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2019

@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?

@afinch7

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2019

@mtharrison

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2019

@acconrad I have a WIP PR open for that denoland/registry#95

@geglock

This comment has been minimized.

Copy link

commented Jun 25, 2019

Support for "http proxy" (for downloading modules) should also be considered for 1.0. See #588. Otherwise deno is hardly usable in enterprise environments.

@ry

This comment has been minimized.

Copy link
Collaborator Author

commented Jun 25, 2019

@geglock Thanks - I will add it to the list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.