profile
viewpoint
Mark Tiedemann MarkTiedemann E.ON Hamburg, Germany https://marksweb.site

pull request commentsindresorhus/windows-release

Fix case sensitive and path issues.

Just checked on my Windows 10 laptop. WMIC is located in C:\Windows\System32\wbem\WMIC.exe. That is lower-case wbem rather than Wbem as a capitalized word. If Bash on Windows is case-sensitive, then that would fail on my laptop, right?

Should we perhaps check whether we're running in Bash on Windows? If so, check how the file is called, then execute it. If not, just execute wbem?

jhaisley

comment created time in 3 hours

issue closedmulesoft/anypoint-examples

Cannot run tests of hello-world example

This fails both in Anypoint Studio and when runnning mvn test.

<details> <summary><code>Failed to execute goal com.mulesoft.munit.tools:munit-maven-plugin:2.1.2:test (test) on project hello-world</code> <i>(Click here to open full stacktrace)</i></summary> <pre> [ERROR] Failed to execute goal com.mulesoft.munit.tools:munit-maven-plugin:2.1.2:test (test) on project hello-world: Build Fail: Exception in thread "main" java.lang.RuntimeException: org.mule.maven.client.api.BundleDependenciesResolutionException: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.mule.runtime.module.embedded.internal.DefaultEmbeddedContainerBuilder.build(DefaultEmbeddedContainerBuilder.java:263) [ERROR] at org.mule.munit.remote.container.ContainerFactory.createContainer(ContainerFactory.java:69) [ERROR] at org.mule.munit.remote.RemoteRunner.run(RemoteRunner.java:117) [ERROR] at org.mule.munit.remote.RemoteRunner.main(RemoteRunner.java:92) [ERROR] Caused by: org.mule.maven.client.api.BundleDependenciesResolutionException: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:221) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:204) [ERROR] at org.mule.runtime.module.embedded.internal.MavenContainerClassLoaderFactory.create(MavenContainerClassLoaderFactory.java:50) [ERROR] at org.mule.runtime.module.embedded.internal.DefaultEmbeddedContainerBuilder.build(DefaultEmbeddedContainerBuilder.java:128) [ERROR] ... 3 more [ERROR] Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) [ERROR] at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.readArtifactDescriptor(AetherMavenClient.java:346) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:215) [ERROR] ... 6 more [ERROR] Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:231) [ERROR] at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:206) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:585) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:503) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) [ERROR] ... 11 more </pre> </details>

closed time in 11 hours

MarkTiedemann

issue commentmulesoft/anypoint-examples

Cannot run tests of hello-world example

Okay, thank you, @ICfl!

MarkTiedemann

comment created time in 11 hours

pull request commentsindresorhus/windows-release

Fix case sensitive and path issues.

When running in case sensitive environment

Which Windows environment is case-sensitive? Which one are you using?

/System32/Wbem/WMIC

Why /? Shouldn't this be \\System32\\Wbem\\WMIC? Or perhaps path.join(process.env.WINDIR, 'System32', 'Wbem', 'WMIC')?

Also, if we specify the full path, might as well add the extension for clarity.

jhaisley

comment created time in a day

issue commentmulesoft/anypoint-examples

Cannot run tests of hello-world example

$ mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T21:00:29+02:00)
Maven home: /usr/local/Cellar/maven/3.6.1/libexec
Java version: 1.8.0_192, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre
Default locale: en_DE, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.5", arch: "x86_64", family: "mac"
Anypoint Studio
Version: 7.3.4
Build Id: 201905081644
MarkTiedemann

comment created time in a day

issue openedmulesoft/anypoint-examples

Cannot run tests of hello-world example

This fails both in Anypoint Studio and when runnning mvn test.

<details> <summary><code>Failed to execute goal com.mulesoft.munit.tools:munit-maven-plugin:2.1.2:test (test) on project hello-world</code> <i>(Click here to open full stacktrace)</i></summary> <pre> [ERROR] Failed to execute goal com.mulesoft.munit.tools:munit-maven-plugin:2.1.2:test (test) on project hello-world: Build Fail: Exception in thread "main" java.lang.RuntimeException: org.mule.maven.client.api.BundleDependenciesResolutionException: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.mule.runtime.module.embedded.internal.DefaultEmbeddedContainerBuilder.build(DefaultEmbeddedContainerBuilder.java:263) [ERROR] at org.mule.munit.remote.container.ContainerFactory.createContainer(ContainerFactory.java:69) [ERROR] at org.mule.munit.remote.RemoteRunner.run(RemoteRunner.java:117) [ERROR] at org.mule.munit.remote.RemoteRunner.main(RemoteRunner.java:92) [ERROR] Caused by: org.mule.maven.client.api.BundleDependenciesResolutionException: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:221) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:204) [ERROR] at org.mule.runtime.module.embedded.internal.MavenContainerClassLoaderFactory.create(MavenContainerClassLoaderFactory.java:50) [ERROR] at org.mule.runtime.module.embedded.internal.DefaultEmbeddedContainerBuilder.build(DefaultEmbeddedContainerBuilder.java:128) [ERROR] ... 3 more [ERROR] Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:444) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:246) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:223) [ERROR] at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:294) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.readArtifactDescriptor(AetherMavenClient.java:346) [ERROR] at org.mule.maven.client.internal.AetherMavenClient.resolveBundleDescriptorDependencies(AetherMavenClient.java:215) [ERROR] ... 6 more [ERROR] Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Failure to find com.mulesoft.mule.distributions:mule-runtime-impl-bom:pom:4.1.1 in https://repo.maven.apache.org/maven2/ was cached in the local repository, resolution will not be reattempted until the update interval of maven-central has elapsed or updates are forced [ERROR] at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:231) [ERROR] at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:206) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:585) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:503) [ERROR] at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:421) [ERROR] ... 11 more </pre> </details>

created time in 3 days

startedceltric/kotlin-html

started time in 6 days

startedcurl/curl

started time in 7 days

startedh2o/h2o

started time in 7 days

issue commentdenoland/deno

Deno.open mode

I think there's one question regarding the names: Do we use the classic Unix names (for example, O_WRONLY, O_CREAT) or simplified names (for example, write [write_only?], create)?

And the second question: How do we allow multiple flags to be passed to the API? Options object, array spread, or bitmask?

open(file, { write: true, create: true })
open(file, O_WRITE, O_CREATE)
open(file, O_WRITE | O_CREATE)

I think that simple names in combination with an options object are the most idiomatic for JavaScript (though I do also see value in sticking with the actual Unix names and using bitmasks).

MarkTiedemann

comment created time in 7 days

issue openeddenoland/deno

Deno.open mode

I believe open should accept the mode as a number rather than a string to allow multiple modes to be combined (via bitwise-or). Currently, there is no way to open and write to a file in such a way that, if it doesn't exist, it will be created first, as in O_WRONLY | O_CREAT (where O_WRONLY = 0x1 and O_CREAT = 0x40).

created time in 8 days

issue commentdenoland/deno

Async iteration for fetch response body

I think it's poorly designed

I agree that it's more complicated than Deno's API, but is it really so bad that we don't ever want to support it? I think for this use-case, for example, it's actually fairly similar.

// Deno API
let { eof, nread } = await response.body.read(buffer)

// Streams API
let reader = response.body.getReader({ mode: 'byob' })
let { done, value } = await reader.read(buffer)

Personally, I'd like Deno to be compatible with the Streams API to be even more browser-friendly. On one hand, the Streams API is still fairly experimental so it might be best to wait. On the other hand, I can also imagine that, whenever the Streams API is stable, we have 3 major competing JS stream APIs (Web, Node, Deno) further fragmenting the JS ecosystem.

MarkTiedemann

comment created time in 12 days

issue commentdenoland/deno

Async iteration for fetch response body

This feature would require implementing parts of the Streams API, for example, ReadableStream and related classes.

@ry What are your thoughts on the Streams API?

MarkTiedemann

comment created time in 12 days

issue openeddenoland/deno

Async iteration for fetch response body

let response = await fetch(url);
for await (let chunk of response.body) {
  // ...
}

Currently failing with error TS2504: Type 'Body' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.

created time in 12 days

issue commentdenoland/deno

hope: XMLHttpRequest in deno

XMLHttpRequest is needed for upload progress events.

runnerSnail

comment created time in 12 days

push eventMarkTiedemann/deno_install

Andy Hayden

commit sha 2d7a97e2f1cbf1c986d37fedb7c19329325b25f1

Add brew install deno to README (#62)

view details

push time in 12 days

issue commentdenoland/deno

deno fmt is slow

Speaking of formatting being slow... Last year, I implemented a small wrapper around Prettier called prettier-if-modified which made formatting incremental (only reformat files that were changed). This was implemented using extended file attributes (https://github.com/denoland/deno/issues/2415 would be a prerequisite) and sped up the formatting of a codebase with a few thousand TypeScript files from 30s to a few ms (provided you only touched a few files).

ry

comment created time in 14 days

issue commentdenoland/deno

deno fmt is slow

a mixing of concerns (deno being the main runtime, and the formatter being purely a dev tool

Personally, I like that Deno has common dev tooling out-of-the-box (like fmt, bundle, info, etc.) Separate concerns as subcommands makes it easy to distribute this tooling for Deno and easy to discover and use the tooling for users.

ry

comment created time in 14 days

push eventMarkTiedemann/azure-hackathon

Mark Tiedemann

commit sha b4fc852afb48ef3890419faae415b5d133c6645b

Minor fixes

view details

push time in 14 days

issue commentdenoland/deno_install

TLS 1.0 support

@ry Any chance we can enable TLS 1.0 for deno.land in CloudFront? This is still an issue.

$ curl --tlsv1.0 https://deno.land/x/install/install.ps1
-curl: (35) error:14004410:SSL routines:CONNECT_CR_SRVR_HELLO:sslv3 alert handshake failure
MarkTiedemann

comment created time in 14 days

issue commentdenoland/deno

support window.onload

What about the corresponding window.onbeforeunload and window.onunload? Similar to process.on("beforeExit", ...) and process.on("exit", ...) in Node.

ry

comment created time in 14 days

issue commentdenoland/deno

deno fmt is slow

Or should we perform deno fmt without any download?

I would advocate for that. This would allow people to format code in flaky or no network situations.

For example, I downloaded v0.8.0 yesterday on a 100 Mbps connection. Today, on a flaky 2G hotspot, I was able to recompile my code, but I wasn't able to format it: deno fmt failed twice after roughly 10 minutes with an uncaught HttpOther error, probably due to the flaky connection. This was kind of unexpected.

ry

comment created time in 16 days

startedspring1944/spring1944

started time in 20 days

startedw84death/Tanks-of-Freedom

started time in 20 days

startedopengaming/osgameclones

started time in 20 days

PublicEvent

issue commentdenoland/deno

"deno https://deno.land/welcome.ts" should work

If one wants to run REPL with some args then using deno -- --foo --bar can be used.

How about a repl subcommand, e.g. deno repl --foo instead of deno -- --foo?

$ deno             # short for `deno repl`
$ deno repl        # run REPL
$ deno repl --foo  # run REPL with args

$ deno script.ts      # short for `deno run script.ts`
$ deno run script.ts  # run script.ts
ry

comment created time in 23 days

issue commentdenoland/deno

"deno https://deno.land/welcome.ts" should work

I really have disliked the need for run though I understand the need.

What is the need for run? Is it to prevent ambiguity? e.g. an info file colliding with the info subcommand?

I was under the impression that Deno scripts, in contrast to Node scripts, should have an extension (e.g. .ts).

So this is only relevant for usage in executable scripts with shebangs, right? e.g.

// ./info
#!/usr/bin/env deno run
console.log("Important info!")
$ chmod +x info
$ ./info
Important info!

Note that shebang-usage as shown above won't work on Linux since it treats the shebang args as a single argument (e.g. 'deno run': No such file or directory).

Note that this also won't work on Windows since there are no shebangs on Windows. However, you can use file associations on Windows to easily turn your Deno scripts into executable files, e.g.

setx PATHEXT %PATHEXT%;.ts
assoc .ts=deno
ftype deno=deno.exe run %1 %*
// C:\deno\hello.ts
console.log("Hello World!")
C:\deno> hello
Hello World!

So, unless I'm missing something, only on Linux this would lead to issues when using an executable script named just like a Deno subcommand. To me, that doesn't justify making Deno usage less ergonomic for Mac and Windows users. I'd rather see a note in the documentation that says that you shouldn't name your Deno executable script on Linux like a Deno subcommand because, if you do, the subcommand will be executed rather than your script...

ry

comment created time in 23 days

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha 9f6495b1617b7eb0cde5dd9a819db82ed5cd12d2

Remove weather info todo (wontfix)

view details

push time in a month

Pull request review commentdenoland/deno_std

Refactor BufReader/BufWriter interfaces to be more idiomatic

 function fixLength(req: ServerRequest): void { // ParseHTTPVersion parses a HTTP version string. // "HTTP/1.0" returns (1, 0, true). // Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792-export function parseHTTPVersion(vers: string): [number, number, boolean] {-  const Big = 1000000; // arbitrary upper bound-  const digitReg = /^\d+$/; // test if string is only digit-  let major: number;-  let minor: number;-+export function parseHTTPVersion(vers: string): [number, number] {   switch (vers) {     case "HTTP/1.1":-      return [1, 1, true];+      return [1, 1];+     case "HTTP/1.0":-      return [1, 0, true];-  }+      return [1, 0]; -  if (!vers.startsWith("HTTP/")) {-    return [0, 0, false];-  }+    default: {+      const Big = 1000000; // arbitrary upper bound

It seems out of scope for this PR to fix it

Agreed.

I think we should accept "HTTP/0.9" and /^HTTP\/1.(\d+)$/ and call it a day.

I think we should accept only 0.9, 1.0, and 1.1 in this case. This is effectively an HTTP 1 parser. Since H2 and H3 are completely different and there's not gonna be a 1.2 version (at least not any time soon), I think we can simplify this even more. (And even if 1.3 should come out one day, we'll probably know about it in advance and can just simply add the missing case then. I'd go with YAGNI here.)

This brings up another important point (which is unimportant for this PR, however): Do we need to parse and handle version 0.9 and 1.0 differently? For example, 0.9 uses different methods, such as -- and this is not a joke -- SPACEJUMP. Are there important differences that we need to take into account? And on another related note, is anyone still using 0.9 and 1.0? 1.1 is from 1997, 22 years old. If no one is using 0.9 and 1.0, should we just drop support for them?

piscisaureus

comment created time in a month

pull request commentdenoland/deno_std

Refactor BufReader/BufWriter interfaces to be more idiomatic

Everyone knows that 0 means EOF anyway.

Not sure that's universal. For example, Java's BufferedReader#read returns -1, .NET's Stream#read returns 0, and C's EOF expands to "a negative integer".

piscisaureus

comment created time in a month

issue commentdenoland/deno

xattr API

On Windows, you can easily use NTFS Alternate Data Streams to store meta data on files.

function setFileAttr(filename: string, key: string, value: Uint8Array) {
  return Deno.writeFile(filename + ":" + key, value);
}

function getFileAttr(filename: string, key: string) {
  return Deno.readFile(filename + ":" + key);
}

function uint8ArrayEquals(a: Uint8Array, b: Uint8Array) {
  return a.length === b.length && a.every((val, idx) => val === b[idx]);
}

(async function test() {
  let a = new TextEncoder().encode(Date.now().toString());
  await setFileAttr(Deno.args[0], "LastTestRun", a);
  let b = await getFileAttr(Deno.args[0], "LastTestRun");
  if (!uint8ArrayEquals(a, b)) {
    console.error(a, "!==", b);
    Deno.exit(1);
  }
})();

Haven't found an easy way to do this on MacOS and Linux without native code yet.

MarkTiedemann

comment created time in a month

issue openeddenoland/deno

xattr API

Would love to have an API for extended file attributes.

My use case is speeding up code formatting by making it incremental: Save the last time a file was formatted in an extended file attribute, then only re-format files which were modified again after having been formatted (instead of unnecessarily re-formatting all files).

API would be along the lines of:

setFileAttr(filename: string, key: string, value: string): Promise<void>
getFileAttr(filename: string, key: string): Promise<string>

Permissions would be set -> write, get -> read.

created time in a month

issue commentdenoland/deno

API for watching files

What's more, A close() API is necessary.

I think if we use async generators, then we don't need a close API, but can use the built-in return API (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return).

let watcher = Deno.watch(/*...*/);
// ...

// some time later
await watcher.return(); // wait for watcher to close
kitsonk

comment created time in a month

Pull request review commentdenoland/deno_std

Refactor BufReader/BufWriter interfaces to be more idiomatic

 function fixLength(req: ServerRequest): void { // ParseHTTPVersion parses a HTTP version string. // "HTTP/1.0" returns (1, 0, true). // Ported from https://github.com/golang/go/blob/f5c43b9/src/net/http/request.go#L766-L792-export function parseHTTPVersion(vers: string): [number, number, boolean] {-  const Big = 1000000; // arbitrary upper bound-  const digitReg = /^\d+$/; // test if string is only digit-  let major: number;-  let minor: number;-+export function parseHTTPVersion(vers: string): [number, number] {   switch (vers) {     case "HTTP/1.1":-      return [1, 1, true];+      return [1, 1];+     case "HTTP/1.0":-      return [1, 0, true];-  }+      return [1, 0]; -  if (!vers.startsWith("HTTP/")) {-    return [0, 0, false];-  }+    default: {+      const Big = 1000000; // arbitrary upper bound

Why is an arbitrary upper bound for the HTTP version necessary here? Isn't HTTP/2 already binary instead of text-based, and doesn't have a status line?

piscisaureus

comment created time in a month

pull request commentdenoland/deno_install

Add brew install deno to README

If someone updates the manual, please also recommend scoop install deno on Windows.

hayd

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" on aborted connections

Here's a reliable reproduction:

// main.ts
// Run with `deno run --allow-net main.ts`

import { serve } from "https://deno.land/std/http/server.ts";

async function main() {
  for await (let req of serve(":80")) {
    req.respond({});
  }
}

main();
// repro.js
// Run with `node repro.js

let net = require("net");

let client = net.createConnection({ port: 80 }, () => {
  client.write("GET / HTTP/1.0\r\n\r\n");
  client._destroy(new Error(), _ => {});
});
MarkTiedemann

comment created time in a month

issue openeddenoland/deno

'bad rid' panic when listening on

// server.ts
import { serve } from "https://deno.land/std/http/server.ts";

async function main() {
  for await (let req of serve(":80")) {
    console.log(req.proto, req.method, req.url);
    req.respond({});
  }
}

main();
// test.ts
async function main() {
  let enc = new TextEncoder();
  let conn = await Deno.dial("tcp", ":80");
  conn.write(enc.encode("GET / HTTP/1.0\n"));
  conn.close();
}

main();

Ran server.ts, then ran test.ts in another window:

❯ deno run --allow-net test.ts
[1/1] Compiling file:///Users/marktiedemann/dev/deno_test/test.ts
thread '<unnamed>' panicked at 'bad rid', ../../cli/resources.rs:237:15
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
thread 'main' panicked at 'internal error: entered unreachable code', ../../third_party/rust_crates/registry/src/github.com-1ecc6299db9ec823/tokio-0.1.20/src/runtime/threadpool/mod.rs:296:26
thread 'main' panicked at 'unexpected state while aborting task: Complete', ../../third_party/rust_crates/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.14/src/task/mod.rs:216:21
stack backtrace:
   0:        0x10c034ab3 - <std::sys::unix::backtrace::tracing::imp::UnwindError as core::fmt::Display>::fmt::h91279d169ccb5b2c
   1:        0x10c02d6f2 - std::sys_common::alloc::realloc_fallback::h1ea3e7dd66f55875
   2:        0x10c031056 - std::panicking::take_hook::hf5878833b3146ef1
   3:        0x10c030d61 - std::panicking::take_hook::hf5878833b3146ef1
   4:        0x10c0317cf - std::panicking::rust_panic_with_hook::h547ea459e27be908
   5:        0x10c0312fc - std::panicking::begin_panic_fmt::hcacc0f82ca07e29f
   6:        0x10c031250 - std::panicking::begin_panic_fmt::hcacc0f82ca07e29f
   7:        0x10ce47c76 - <tokio_threadpool::task::Task::run::{{closure}}::Guard<'a> as core::ops::drop::Drop>::drop::h3e4ab556eba4c96c
   8:        0x10ce41e59 - tokio_threadpool::pool::state::<impl core::convert::From<tokio_threadpool::pool::state::Lifecycle> for usize>::from::h025a5dce3d6dcb6a
   9:        0x10ce499be - <tokio_threadpool::shutdown::ShutdownTrigger as core::ops::drop::Drop>::drop::hefa5d5ec07d4e8ed
  10:        0x10ce431db - <tokio_threadpool::worker::state::Lifecycle as core::fmt::Debug>::fmt::he88a1c5c815cc32d
  11:        0x10ce3d089 - tokio_threadpool::thread_pool::ThreadPool::shutdown_now::h6b270460ce9a5a1a
  12:        0x10ce1d8bc - tokio::runtime::current_thread::runtime::Runtime::run::hd4ea896f4ae076a4
  13:        0x10ce20160 - <tokio::runtime::threadpool::Runtime as core::ops::drop::Drop>::drop::h06f07afe0cfb18e8
  14:        0x10d0606fb - unicode_normalization::normalize::is_hangul_syllable::h3690a31bd91fba4a
  15:        0x10d135194 - unicode_normalization::normalize::is_hangul_syllable::h3690a31bd91fba4a
  16:        0x10d042b55 - unicode_normalization::normalize::is_hangul_syllable::h3690a31bd91fba4a
  17:        0x10c031167 - std::panicking::update_panic_count::hbf086650ecde3007
  18:        0x10c0414be - __rust_maybe_catch_panic
  19:        0x10c031c4d - std::rt::lang_start_internal::he82d111f45e8971a
  20:        0x10d1359f8 - main
thread panicked while panicking. aborting.
zsh: illegal hardware instruction  deno run --allow-net test.ts

When changing the addr to "localhost:80", the panic is gone and a proper error is printed instead:

Uncaught ConnectionRefused: Connection refused (os error 61)
    at DenoError (js/errors.ts:22:5)
    at maybeError (js/errors.ts:33:12)
    at handleAsyncMsgFromRust (js/dispatch.ts:41:17)
    at handleAsyncMsgFromRust (shared_queue.js:157:9)

created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" on aborted connections

On a side note, having the HTTP server in the std lib makes it surprisingly easy to debug. :heart:

MarkTiedemann

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" on aborted connections

In any case, we shouldn't try to send a HTTP 400 response when we can't read the status line of the request, right?

MarkTiedemann

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" on aborted connections

Cloned deno_std and added a good old console log...

 if (bufStateErr instanceof Error) {
   // An error was thrown while parsing request headers.
+  console.error(bufStateErr);  
   await writeResponse(req.w, {
     status: 400,
     body: new TextEncoder().encode(`${bufStateErr.message}\r\n\r\n`)
   });
 }
❯ make
deno run --allow-net main.ts
[1/1] Compiling file:///Users/marktiedemann/dev/deno_std/http/server.ts
Error: read error
    at read (gen/cli/bundle/main.js:7036:17)
    at async BufReader._fill (/Users/marktiedemann/dev/deno_std/io/bufio.ts:53:22)
    at async BufReader.readSlice (/Users/marktiedemann/dev/deno_std/io/bufio.ts:272:13)
    at async BufReader.readLine (/Users/marktiedemann/dev/deno_std/io/bufio.ts:209:27)
    at async TextProtoReader.readLineSlice (/Users/marktiedemann/dev/deno_std/textproto/mod.ts:121:34)
    at async TextProtoReader.readLine (/Users/marktiedemann/dev/deno_std/textproto/mod.ts:40:27)
    at async readRequest (/Users/marktiedemann/dev/deno_std/http/server.ts:201:24)
    at async Server.iterateHttpRequests (/Users/marktiedemann/dev/deno_std/http/server.ts:231:38)
    at async Server.acceptConnAndIterateHttpRequests (/Users/marktiedemann/dev/deno_std/http/server.ts:276:9)
    at async MuxAsyncIterator.callIteratorNext (/Users/marktiedemann/dev/deno_std/util/async.ts:33:33)
/Users/marktiedemann/dev/deno_std/http/server.ts:250:36
            await writeResponse(req.w, {
                                    ^
Uncaught TypeError: Cannot read property 'w' of null
    at iterateHttpRequests (file:///Users/marktiedemann/dev/deno_std/http/server.ts:279:31)
make: *** [Makefile:3: all] Error 1

The req variable which is null comes from [req, bufStateErr] = await readRequest(bufr);. In readRequest there's an if (err) { return [null, err]; } block. So in this case, it is guaranteed that, if there is an err in readRequest, the req is null. The err from readRequest in this case is for the case that the HTTP status line can't be read, I assume because the underlying connection has been closed.

Not sure how to continue with this. Hope my investigation so far is helpful.

MarkTiedemann

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

After 9 runs no crash on my side.

Did you run autocannon with --duration or --amount?

I just ran autocannon --duration 1 localhost 10 times. Each time, the server handled ~16000 requests just fine, then crashed at the end.

When I ran autocannon --amount 16000 localhost 10 times, however, the server didn't crash a single time.

So I'm pretty sure that it has to do with how the connections are closed. When running with --amount, autocannon probably only sends as many requests as necessary. I'd guess, with --duration, it sends as many as possible, then aborts the remaining ones that haven't been answered yet at the end of the duration.

MarkTiedemann

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

macOS 10.14.4, deno 0.6.0.

MarkTiedemann

comment created time in a month

push eventMarkTiedemann/deno_install

Mark Tiedemann

commit sha 1257b7e42fbe7d2e637cdec50e86f538aaf0e56f

ps: Add -UseBasicParsing flag (#57)

view details

Yoshiya Hinosawa

commit sha 7dce093c20c2e86a3504aebb1b073c638cc910a8

fix ci for version subcommand (#60)

view details

gamesquestionmark

commit sha 052c16c8232f49ec9a8ba6c4d1809d79d2f60b82

fixed typo (#61)

view details

push time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

well that's a nice hint! On each run? I'll try to improve this.

Yes, on each autocannon run. I can basically watch the server and wait until it crashes to see when the load test is over.

I did try to reproduce making different combinations of aborted and partial requests from Node, but couldn't reproduce it yet. Maybe it's the combination of a certain load and aborted requests or something of that sort.

MarkTiedemann

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

It seems to crash only at the end of the load test rather than because of the load. So probably when requests are being aborted.

MarkTiedemann

comment created time in a month

pull request commentdenoland/deno_std

Revert "http: delete conn parameter in readRequest (#430)"

This fixes #441 instead of #442.

ry

comment created time in a month

issue commentdenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

Still the same.

/Users/<redacted>/Library/Caches/deno/deps/https/raw.githubusercontent.com/denoland/deno_std/master/http/server.ts:249:36
            await writeResponse(req.w, {
                                    ^
Uncaught TypeError: Cannot read property 'w' of null
    at iterateHttpRequests (file:///Users/<redacted>/Library/Caches/deno/deps/https/raw.githubusercontent.com/denoland/deno_std/master/http/server.ts:278:31)
MarkTiedemann

comment created time in a month

issue openeddenoland/deno_std

Error "Cannot read property 'w' of null at iterateHttpRequests" under high load

// server.ts
import { serve } from "https://deno.land/std/http/server.ts";

server();

async function server() {
  let res = { body: new Uint8Array() };
  for await (let req of serve(":80")) {
    req.respond(res);
  }
}
$ deno run --allow-net server.ts
/Users/<redacted>/Library/Caches/deno/deps/https/raw.githubusercontent.com/denoland/deno_std/master/http/server.ts:225:36
            await writeResponse(req.w, {
                                    ^
Uncaught TypeError: Cannot read property 'w' of null
    at iterateHttpRequests (file:///Users/<redacted>/Library/Caches/deno/deps/https/raw.githubusercontent.com/denoland/deno_std/master/http/server.ts:254:31)
$ autocannon localhost
Running 10s test @ localhost
10 connections

┌─────────┬──────┬──────┬───────┬──────┬─────────┬─────────┬──────────┐
│ Stat    │ 2.5% │ 50%  │ 97.5% │ 99%  │ Avg     │ Stdev   │ Max      │
├─────────┼──────┼──────┼───────┼──────┼─────────┼─────────┼──────────┤
│ Latency │ 0 ms │ 0 ms │ 1 ms  │ 2 ms │ 0.07 ms │ 0.39 ms │ 11.05 ms │
└─────────┴──────┴──────┴───────┴──────┴─────────┴─────────┴──────────┘
┌───────────┬────────┬────────┬─────────┬─────────┬──────────┬─────────┬────────┐
│ Stat      │ 1%     │ 2.5%   │ 50%     │ 97.5%   │ Avg      │ Stdev   │ Min    │
├───────────┼────────┼────────┼─────────┼─────────┼──────────┼─────────┼────────┤
│ Req/Sec   │ 22879  │ 22879  │ 27695   │ 28287   │ 27145.46 │ 1494.03 │ 22871  │
├───────────┼────────┼────────┼─────────┼─────────┼──────────┼─────────┼────────┤
│ Bytes/Sec │ 869 kB │ 869 kB │ 1.05 MB │ 1.08 MB │ 1.03 MB  │ 56.8 kB │ 869 kB │
└───────────┴────────┴────────┴─────────┴─────────┴──────────┴─────────┴────────┘

Req/Bytes counts sampled once per second.

299k requests in 11.06s, 11.3 MB read

When I restarted the server and ran another load test, it crashed again. Might not be related to the high load, though.

created time in a month

issue openeddenoland/deno_std

ws module broken

https://github.com/denoland/deno_std/pull/430 removed the conn property from ServerRequest "because it's not used anymore". However, this property is still used in acceptWebSocket (see: https://github.com/denoland/deno_std/blob/master/ws/mod.ts#L368). So the ws module is broken now.

created time in a month

issue openeddenoland/deno

duplicate "cannot resolve module" error when trying to run non-existent script

❯ deno run does-not-exist.ts
Cannot resolve module "file:///<redacted>/does-not-exist.ts" from "."
Cannot resolve module "file:///<redacted>/does-not-exist.ts" from "."

created time in a month

issue commentdenoland/deno

deno watch for web development

Duplicate of #1826

I'd say it's related rather than a duplicate. #1826 is about the Deno.watch API, not about the watch subcommand or --watch flag.

I also found #2251 which is related. It's about "automatically restarting the server". I think the solution to that would be the subcommand / flag.

MarkTiedemann

comment created time in a month

issue openeddenoland/deno

deno watch

Would love to have a better web development experience with Deno out of the box.

  • First, the server should restart whenever I make changes.
  • Second, the website should reload whenever I make changes.

For the server, I'd like to propose a deno watch subcommand or deno run --watch flag that automatically restart the server in a controlled way, e.g.

deno watch *.ts --run main.ts --allow-net
# or
deno run --watch *.ts --allow-net main.ts

If we also had a Deno.watch API for watching directories or files, we could then implement a simple client refresh via server-sent events (example) or web sockets.

created time in a month

issue closeddenoland/deno

deno fmt broken after upgrade to v0.6.0

❯ make
deno fmt ./src/*.ts ./src/**/*.ts
[0/1] Compiling https://deno.land/std/prettier/main.ts/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:183:38 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

183     const parser = selectParser(file.path);
                                         ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:185:34 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

185       checks.push(checkFile(file.path, parser, prettierOpts));
                                     ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:211:38 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

211     const parser = selectParser(file.path);
                                         ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:213:36 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

213       formats.push(formatFile(file.path, parser, prettierOpts));
                                       ~~~~

make: *** [Makefile:10: format] Error 1

closed time in a month

MarkTiedemann

issue commentdenoland/deno

deno fmt broken after upgrade to v0.6.0

Fixed after running the same command with --reload. (Never had to do that before after an upgrade.)

MarkTiedemann

comment created time in a month

issue openeddenoland/deno

deno fmt broken after upgrade to v0.6.0

❯ make
deno fmt ./src/*.ts ./src/**/*.ts
[0/1] Compiling https://deno.land/std/prettier/main.ts/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:183:38 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

183     const parser = selectParser(file.path);
                                         ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:185:34 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

185       checks.push(checkFile(file.path, parser, prettierOpts));
                                     ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:211:38 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

211     const parser = selectParser(file.path);
                                         ~~~~
/Users/marktiedemann/Library/Caches/deno/deps/https/deno.land/std/prettier/main.ts:213:36 - error TS2339: Property 'path' does not exist on type 'FileInfo'.

213       formats.push(formatFile(file.path, parser, prettierOpts));
                                       ~~~~

make: *** [Makefile:10: format] Error 1

created time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha 30d0b8e3a597923faba654f7d9e5350214b2a15b

Add battery info

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha d28baa23dd05044b5435fa3c2136f7f3cac7d8ef

Add clock and date

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha 5b08a4a0a00046535317be426d625987365e0eac

Update installation instructions

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha f82893cf5f97cb4311e1329513dbb06001a4723a

Use Mongolian Vowel Separator to make the title look empty

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha f25164846e78dd0dacf6b1ffeba7476df23510a1

Add search bar

view details

push time in a month

startedneo4j/neo4j

started time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha cb4125b3c54a67bce3febd7e356f12855d57279e

Use brand colors on hover for apps

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha 019b4206f097e6d0e66ab22942895a3e4d7c7468

Add apps

view details

push time in a month

push eventMarkTiedemann/new-tab

Mark Tiedemann

commit sha afe22175c2d7e423bebc00feccf38dc812b54867

Initial commit

view details

push time in a month

create barnchMarkTiedemann/new-tab

branch : master

created branch time in a month

created repositoryMarkTiedemann/new-tab

created time in a month

startedianyh/Amethyst

started time in a month

issue commentsindresorhus/refined-github

Allow rendering of large diffs

GitHub does give us the raw patch, though, for example: https://github.com/sindresorhus/refined-github/pull/2042.patch

From that, I believe we could build a simplified diff, for example, without language-specific syntax highlighting:

 		element,
 		tag,
 		commit: select('[href*="/commit/"]', element)!.textContent!.trim(),
-		...parseTag(tag) // `version`, `namespace`
+		...parseTag(decodeURIComponent(tag)) // `version`, `namespace`
 	};
 }
 

MarkTiedemann

comment created time in a month

issue openedsindresorhus/refined-github

Allow rendering of large diffs

Load diff
Large diffs are not rendered by default.

However, when I click the Load diff button, GitHub still doesn't render the diff:

16,294 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.

Would be nice if (Refined) GitHub would render the diff, even if that means freezing my browser window for a few seconds (perhaps this would need a warning and confirmation dialog before starting the rendering...).

created time in a month

create barnchMarkTiedemann/sf-dx-mdapi-conversion

branch : master

created branch time in a month

created repositoryMarkTiedemann/sf-dx-mdapi-conversion

created time in a month

issue openeddenoland/deno

deno v0.5.0 prints additional new line

~/dev/test
❯ curl -fsSL https://deno.land/x/install/install.sh | sh -s v0.4.0
######################################################################## 100.0%
Deno was installed successfully to /Users/<redacted>/.deno/bin/deno
Run 'deno --help' to get started

~/dev/test 17s
❯ touch empty.js

~/dev/test
❯ echo "console.log('test')" > test.js

~/dev/test
❯ deno run empty.js

~/dev/test
❯ deno run test.js
test

~/dev/test
❯ curl -fsSL https://deno.land/x/install/install.sh | sh -s v0.5.0
######################################################################## 100.0%
Deno was installed successfully to /Users/<redacted>/.deno/bin/deno
Run 'deno --help' to get started

~/dev/test 12s
❯ deno run empty.js


~/dev/test
❯ deno run test.js

test

~/dev/test
❯

created time in a month

startedapache/skywalking

started time in 2 months

startedTheAlgorithms/Python

started time in 2 months

issue commentdenoland/deno_install

Install via npm

What about calling yours require("deno-api")?

@YounGoat You describe your deno package as a "[b]ridge to Deno", but I don't think "bridge" is an accurate term in this technical context. I believe it would be more accurate to describe your package as a "Deno API ported to Node", hence deno-api would be a better package name.

deno package name (being object of dispute here) was intended to host official deno installer and runner in order to support npx like scenario

This was certainly my idea when I created this issue, but then again, my ideas aren't "official" either. I'm not sure what @ry thinks about this.

MarkTiedemann

comment created time in 2 months

issue openeddenoland/deno

Remove --version flag from deno version subcommand

C:\Users\Mark>deno version --help
deno-version
Print the version

USAGE:
    deno version

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

C:\Users\Mark>deno version --version
deno-version

C:\Users\Mark>deno version
deno: 0.3.10
v8: 7.4.238
typescript: 3.4.1

I think this is confusing.

created time in 2 months

issue commentdenoland/deno

feature-request: Expose the same API in node.js

There's also https://www.npmjs.com/package/deno which tries to bring the Deno API to Node (see: https://github.com/denoland/deno_install/issues/6).

WillAvudim

comment created time in 2 months

issue openeddenoland/deno_install

Use version subcommand instead of --version flag in CI

To fix broken builds.

created time in 2 months

issue closedYounGoat/nodejs.deno

Transfer ownership to Deno project

It would be nice if you could transfer ownership of npmjs.com/deno to the Deno project.

See: denoland/deno_install#6

closed time in 2 months

MarkTiedemann

issue commentYounGoat/nodejs.deno

Transfer ownership to Deno project

Closing, as parent issue (denoland/deno_install#6) has been closed.

MarkTiedemann

comment created time in 2 months

issue closeddenoland/deno_install

Install via npm

I guess npm would be the most familiar way for Node developers to install Deno.

So how about a simple postinstall script in the package.json so you can run npm install deno to install Deno into $HOME/.deno/bin?

npmjs.com/deno is already taken by a "Bridge to deno" package that only has a README so far, but we could ask the author of that package to transfer ownership.

The TypeScript declaration files could be published in the package, too.

If we did that, editors that don't know about Deno, but that do understand TypeScript and auto-download declaration files for code-completion from npm (for example, VS Code), would make it very convenient to get started: You would just have to create a my-script.ts file, open it in your editor, type import * as deno from 'deno', and the editor would give you auto-complete, so you could type deno.en, hit tab, deno.env() would be auto-completed, and you could hover over deno.env() with your mouse to read the docs ... That would be very convenient. :)

closed time in 2 months

MarkTiedemann

issue commentdenoland/deno_install

Install via npm

All right, fair point. Closing for now.

MarkTiedemann

comment created time in 2 months

startedprojectfluent/fluent

started time in 2 months

pull request commentdenoland/deno_install

ps: Add -UseBasicParsing flag

@ry Added -useb for the latest install and changed -out to -outf for the specific install. Is this fine with you?

MarkTiedemann

comment created time in 2 months

push eventMarkTiedemann/deno_install

Mark Tiedemann

commit sha bf4451eacaf933bdccb64397d9d75aa2ded107c2

Update flags

view details

push time in 2 months

pull request commentdenoland/deno_install

ps: Add -UseBasicParsing flag

Right. Sounds good to me. I'll add -useb.

I'll also do another PR to change -out to -outf for the specific version installation (so we get PowerShell <v5 support there).

As well as update the docs in denoland/deno and update the install command in denoland/deno_std.

By the way, did you have any chance to look at https://github.com/denoland/deno_install/issues/56 yet? I think that's a more pressing issue at the moment since it affects nearly all Windows users.

MarkTiedemann

comment created time in 2 months

pull request commentdenoland/deno_install

ps: Add -UseBasicParsing flag

Is there a reason not to update the one-liner?

Other than that this issue is not too common (because I think most devs start IE at least once to google "download Chrome"...), no.

MarkTiedemann

comment created time in 3 months

issue commentdenoland/deno_install

TLS 1.0 support

I'd like to avoid (1) purely because it makes the one-line install command very long...

MarkTiedemann

comment created time in 3 months

push eventMarkTiedemann/deno_install

Mark Tiedemann

commit sha 7215e97b1fdf02e05c3c9a22a66bb1acb05e03a4

Update Known Issues section

view details

push time in 3 months

push eventMarkTiedemann/deno_install

Mark Tiedemann

commit sha 5ac56c90947a9d854b7f59e82fd9115b9d786e15

Update Readme

view details

push time in 3 months

PR opened denoland/deno_install

Add -UseBasicParsing flag

Closes: https://github.com/denoland/deno/issues/1965

Not sure whether we should also update the one-line install command: iwr https://deno.land/x/install/install.ps1 -useb | iex. I don't think this is a common issue, so only documenting this in the Known Issues section seems appropriate to me for now.

cc @ry

+28 -2

0 comment

2 changed files

pr created time in 3 months

create barnchMarkTiedemann/deno_install

branch : use-basic-parsing

created branch time in 3 months

push eventMarkTiedemann/deno_install

Mark Tiedemann

commit sha a98d36778d569a91ee61f6375c4856233cacbd26

ps: Use -OutFile instead of -Out (#55) -Out doesn't work in Windows 8. Fixes #54

view details

push time in 3 months

issue openeddenoland/deno_install

TLS 1.0 support

https://deno.land/x/install/install.ps1 redirects to https://raw.githubusercontent.com/denoland/deno_install/master/install.ps1:

$ curl -I https://deno.land/x/install/install.ps1 | grep Location:
Location: https://raw.githubusercontent.com/denoland/deno_install/master/install.ps1

deno.land does not work with TLS 1.0.

$ curl --tls-max 1.2 https://deno.land/x/install/install.ps1
$ curl --tls-max 1.0 https://deno.land/x/install/install.ps1
-curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure

However, raw.githubusercontent.com works fine with TLS 1.0.

$ curl --tls-max 1.0 https://raw.githubusercontent.com/denoland/deno_install/master/install.ps1
$ curl --tls-max 1.0 https://raw.githubusercontent.com/denoland/deno_install/master/install.ps1

There have been a number of issues because PowerShell <v6 uses TLS 1.0 by default.

For example:

  • https://github.com/denoland/deno_install/issues/51
  • https://github.com/denoland/deno_install/issues/16
  • https://github.com/denoland/deno/issues/1729

The default PowerShell version for Windows 8 is v4, for Windows 10 it is v5. So this impacts nearly all users PowerShell users.

The following fixes are possible:

  • (1) Changing the one-line install command to use TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; iwr https://deno.land/x/install/install.ps1 | iex
  • (2) Changing the one-line install command to point directly to GitHub
iwr https://raw.githubusercontent.com/denoland/deno_install/master/install.ps1 | iex
  • (3) Enabling TLS 1.0 for deno.land

cc @ry

created time in 3 months

startedjedisct1/libsodium

started time in 3 months

issue commentdenoland/deno_install

Install works fine on windows 10 but not windows 8

@GrosSacASac Expand-Archive is available since PowerShell v5 (current version v6). So I suspect you are running on PowerShell v4 or earlier. Feel free to make a PR with a fallback for PowerShell <v5.

GrosSacASac

comment created time in 3 months

fork MarkTiedemann/dashboard

General-purpose web UI for Kubernetes clusters

fork in 3 months

more