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:
- RFC3986-style URLs and Dhall’s old URLs with
path-components are both supported in the ABNF
path-componentallows some characters that RFC3986 doesn’t:
dhall formatwill write URLs as RFC3986-style.
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
$ 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
^ 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
path-components. In practice I’ll change the ABNF to better match RFC3986.)