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