Getting #581 (deprecating old-style non-RFC3986 URLs) to done


#1

I raised issue #581 a while ago and it’s been sitting around not doing much. I’d like to make a final push to get it closed.

My understanding of where the standard is at the moment is:

Therefore, in principle what we need to do is write a deprecation notice marking old-style URLs as deprecated and plan to phase them out of the language.

However, when I did some testing while writing up a deprecation notice, to my surprise old-style URLs seem to no longer be accepted by dhall-haskell:

$ echo http://example.com/foo^bar | dhall
dhall: 
Error: Invalid input

(stdin):1:23:
  |
1 | http://example.com/foo^bar
  |                       ^
unexpected '^'
expecting '%', '/', '?', ->, :, end of input, keyword, operator, or whitespace

Note that ^ is a valid unquoted-path-character so should be allowed here.

Given that the major Dhall implementation doesn’t actually support old-style URLs, can we skip the deprecation notice and just remove support for them from the ABNF? Or have I overlooked or misunderstood something?

(The minimal way we could change the ABNF is to change url-path to only allow segments, not path-components. In practice I’ll change the ABNF to better match RFC3986.)


#2

Having written all this out, I’ve realised that quoted http://example.com/"foobar"-style URLs are still supported by dhall-haskell, so maybe we do need a deprecation notice for them.

EDIT: here is it: https://github.com/dhall-lang/dhall-lang/pull/913